Создание собственных стилей площадных заливок в MapInfo

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Эта страница является черновиком статьи.


По-умолчанию, в ГИС системе MapInfo Proffesional представлены некоторые виды стилей линий и площадных заливок. Однако, в отличии от стилей символьных объектов, которые можно выбирать не только из .ttf шрифтов, но даже и создавать свои собственные символы из растровых картинок, стили линий и штриховок редактировать штатными средствами MapInfo нельзя. Но если для редактирования файлов формата .pen, отвечающего за стили линий, существует бесплатная утилита Line Style Editor, то со стилями штриховок ситуация сложнее. Дело в том, что стили штриховок созданы в виде отдельных файлов .bmp и прикреплены к системному файлу. Поэтому даже если мы и создадим свои штриховки, тем самым подредактировав системный файл MapInfo, нам нужно будет этот же файл целиком передать тому, кто собирается открывать таблицы. В противном случае, у того, кому мы всё это передадим, ничего не отобразится. Поэтому создавать свои заливки удобно скорее тем, кто хочет внести что-то новое, похвастаться, или, допустим, создавать свою собственную заливку, выполнить с её помощью какую-то работу, сделать картинку и отправить заказчику.

Для того, чтобы подредактировать стандартных стили заливок и даже создать свои собственные, мы можем воспользоваться двумя способами.

Способ первый

Мы покупаем полнофункциональную версию программы "Редактор площадных заливок". Программа сразу же определяет версию MapInfo, установленную в системе, и предлагает нам подредактировать заливки. Программа удобна тем, что позволяет нам редактировать штриховки напрямую; нет нужды сначала извлекать их, редактировать и прикреплять в качестве ресурсов обратно к библиотеке. Демо-версию можно скачать здесь.

Способ второй

У нас нет желания покупать программу "Редактор площадных заливок". Что же - можно обойтись и без неё. Для этого мы скачиваем небольшую утилитку по редактированию ресурсов (бесплатную). Скачиваем, устанавливаем и запускаем.

Главное окно Resource Hacker

В качестве испытуемого объекта я брал MapInfo версии 11.5.4. Начиная с версии 10.0 ресурсы, относящиеся к заливкам, лежат в файле micore.dll и не менялись в том числе и до версии 11.5.4. Проще говоря - они вездесь одинаковы. Что же - давайте откроем файл micore.dll, находящийся в корневой директории MapInfo. Предварительно не забываем сохранить оригинальный файл micore.dll где-нибудь в другом месте.

Открытый в программе RH файл micore.dll

Перед нами куча ресурсов. Любой из них мы можем брать и заменять на свой собственный, не вмешиваясь в код файла. Нас интересует папка Bitmap. Если туда зайти и прощёлкать файл с 1 по 183, то окажется, что это и есть наши заливки. К слову говоря стилей заливок в MapInfo 184 штуки. Отсутствие заливки (под номером один в самой программе) тоже своего рода заливка. Давайте потренируемся извлекать ресурсы в отдельные файлы. Выделим для примера последнюю заливку, клацнем правой кнопкой и выберем "Save [Bitmap : 183 : 1033]". После чего сохраним файл под любым именем куда-нибудь к себе.

Сохраняем ресурс к себе

Дальше дело за графическим редактором. С учётом того, что мы редактируем примитивный битой .bmp, то подойдёт обычный paint. Давайте откроем наш сохранённый файл .bmp и как-нибудь его изменим. Тут уже вступает в дело втолько Ваша фантазия. После необходимых изменений давайте попробуем заменить тот же самый ресурс, который мы недавно экспортировали. Чтобы это сделать, кликните правой кнопкой на нашем 183-м ресурсе и выберите "Replace Resource".

Заменяем ресурс

В появившемся окошке нажимаем "Open file with new bitmap", после чего выбираем наш созданный .bmp и нажимаем Ок. Если нас всё устраиваем, нажимаем Replace.

Повторно выбрав 183-й ресурс, убедитесь, что он заменился. Сохраните изменённый .dll файл через File - Save. Закрывать RH не обязательно.

Запускайте MapInfo и убедить на любом полигональном объекте, что новая штриховка появилась.

Новая штриховка

Отлично, у нас всё получилось. По сути говоря, в извлечении ресурса не было необходимости. Мы могли и вручную создать картинку в любом графическом редакторе и затем подменить.

Давайте пойдём дальше. Как видно на моей последней картинке, в таблице стилей штриховок есть две свободные ячейки (строка 24, колонки G и H). Давайте попробуем добавить свои заливки. Создайте две любые .bmp с таким же размером (32х32). Имена файлов могут быть любые. После этого делаем следующее. Выделяем папку Bitmap (просто щелкнув по ней левой кнопкой мыши) и в меню выбираем "Action - Add a new Resource".

Добавляем новый ресурс

Нажимаем "Open file with new resource" и выбираем наш созданный .bmp файлик. В качестве имён для первого указываем следующий по порядку номер в ресурсах, то есть "184" (без кавычек). Для второго будет соотвественно "185". Resource language в обоих случаях указываем "1033". Как Вы понимаете, добавлять ресурсы можно строго по одному. Если Вы ошиблись с именем ресурса - не беда. Если кликнуть по нужному ресурсу правой кнопкой и выбрать команду "Rename Resource", то ресурсу можно присвоить новое имя.

Сохраняем наш файл. Запускаем MapInfo и смотрим результат.

Ещё две добавленные штриховки

Всё получилось, мы добавили две новые штриховки. Но и это ещё не всё. Если добавить ещё одну штриховку (теперь под номером 186), то можно увидеть такую вещь:

Новая строка со штриховками

MapInfo прочёл ещё одну штриховку и добавил её в новую строку. Таким образом мы можем продолжать создавать и добавлять штриховки то какого-то определённого предела, ограниченного MapInfo.

На этом всё, успешной Вам работы!

//Всеволод Виноградов