Создание собственных стилей площадных заливок в MapInfo: различия между версиями
Slinger (обсуждение | вклад) Нет описания правки |
Slinger (обсуждение | вклад) Нет описания правки |
||
Строка 50: | Строка 50: | ||
[[Файл:Reshack_8.jpg|200px|thumb|center|Новая строка со штриховками]] | [[Файл:Reshack_8.jpg|200px|thumb|center|Новая строка со штриховками]] | ||
MapInfo прочёл ещё одну штриховку и добавил её в новую строку. Таким образом мы можем продолжать создавать и добавлять штриховки до какого-то определённого предела, ограниченного MapInfo. Максимально лично у меня было в общей сложности 260 заливок и MapInfo продолжал работать стабильно. | MapInfo прочёл ещё одну штриховку и добавил её в новую строку. Таким образом мы можем продолжать создавать и добавлять штриховки до какого-то определённого предела, ограниченного MapInfo. Максимально лично у меня было в общей сложности 260 заливок и MapInfo продолжал работать стабильно. По логике вещей стилей площадных заливок можно добавить от 1 до 899, так как с ресурса под номером 900 уже начинаются другие элементы интерфейса. | ||
'''Внимание!'''. Если Ваша версия MapInfo ниже 10 и Вы не можете найти файл micore.dll, то Ваш файл, с которым будете работать, будет называться mires***.dll, где *** - номер версии MapInfo. Например, для MapInfo версии 8.5 файл называется mires850.dll и находится он в корневой директории MapInfo. Принцип работы тот же. Возможно Вас может смутить тот факт, что количество реальных штриховок внутри MapInfo и количество bitmap картинок внутри mires850.dll различаются. Это не страшно. Достаточно найти номер ресурса последней штриховки и мы так же можем добавлять по вышеописанной схеме новые штриховки. | '''Внимание!'''. Если Ваша версия MapInfo ниже 10 и Вы не можете найти файл micore.dll, то Ваш файл, с которым будете работать, будет называться mires***.dll, где *** - номер версии MapInfo. Например, для MapInfo версии 8.5 файл называется mires850.dll и находится он в корневой директории MapInfo. Принцип работы тот же. Возможно Вас может смутить тот факт, что количество реальных штриховок внутри MapInfo и количество bitmap картинок внутри mires850.dll различаются. Это не страшно. Достаточно найти номер ресурса последней штриховки и мы так же можем добавлять по вышеописанной схеме новые штриховки. |
Версия от 05:15, 3 сентября 2013
По-умолчанию, в ГИС системе 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 где-нибудь в другом месте.
Перед нами куча ресурсов. Любой из них мы можем брать и заменять на свой собственный, не вмешиваясь в код файла. Нас интересует папка 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. Максимально лично у меня было в общей сложности 260 заливок и MapInfo продолжал работать стабильно. По логике вещей стилей площадных заливок можно добавить от 1 до 899, так как с ресурса под номером 900 уже начинаются другие элементы интерфейса.
Внимание!. Если Ваша версия MapInfo ниже 10 и Вы не можете найти файл micore.dll, то Ваш файл, с которым будете работать, будет называться mires***.dll, где *** - номер версии MapInfo. Например, для MapInfo версии 8.5 файл называется mires850.dll и находится он в корневой директории MapInfo. Принцип работы тот же. Возможно Вас может смутить тот факт, что количество реальных штриховок внутри MapInfo и количество bitmap картинок внутри mires850.dll различаются. Это не страшно. Достаточно найти номер ресурса последней штриховки и мы так же можем добавлять по вышеописанной схеме новые штриховки.
На этом всё, успешной Вам работы!
//Всеволод Виноградов