GIS-LAB

Географические информационные системы и дистанционное зондирование

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

Обсудить в форуме Комментариев — 11Редактировать в вики

Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/mapinfo-custom-fill-patterns.html


В заметке приведены способы создания собственных стилей площадных заливок для MapInfo

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

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

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

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

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

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

Главное окно 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 штуки. Отсутствие заливки (с номером 1 в самой программе) тоже своего рода заливка. Давайте потренируемся извлекать ресурсы в отдельные файлы. Выделим для примера последнюю заливку, кликнем правой кнопкой мыши и выберем "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. У автора было при максимальном числе заливок в 260 штук MapInfo продолжал работать стабильно. По логике вещей, стилей площадных заливок можно добавить от 1 до 899, так как с ресурса под номером 900 уже начинаются другие элементы интерфейса.

Если ваша версия MapInfo ниже 10 и вы не можете найти файл micore.dll, то файл, с которым будете работать, скорее всего, будет называться mires***.dll, где *** - номер версии MapInfo. Например, для MapInfo версии 8.5 файл называется mires850.dll и находится он в корневой директории MapInfo. Принцип работы тот же. Возможно, вас может смутить тот факт, что количество реальных штриховок внутри MapInfo и количество bitmap картинок внутри mires850.dll различаются. Это не страшно. Достаточно найти номер ресурса последней штриховки, и мы так же можем добавлять по вышеописанной схеме новые штриховки.

Если у вас возникают вопросы, касающиеся языка добавляемых ресурсов (Language Resource), то просто используйте такой же номер языка, в котором выполнены другие ресурсы. Language Resource это по сути номер языка программы. Например, 1033 для английской версии и 1049 для русской версии. Но в большинстве случаев это число обозначают в шестнадцатеричной кодировке. Соответственно это будут числа 0x409 и 0x419. Полный список номеров можно посмотреть здесь.

Update от 07.12.2016: Если вдруг в файле micore.dll не окажется стилей штриховок, то попробуйте поискать их в файле MIAuxResources.dll. В MapInfo версии 15.0 заливки находятся именно там.

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

Обсудить в форуме Комментариев — 11Редактировать в вики

Последнее обновление: 2016-12-07 13:55

Дата создания: 01.09.2013
Автор(ы): Slinger