Як вже неодноразово стверджувалося, засоби візуального оформлення графічно матеріалів в MapInfo Professional до огидності мізерні і нешанобливо непридатні до реального використання. І, що ще гірше для неофіта, ніяких штатних засобів для виправлення ситуації немає і не передбачається. Але, як відомо, «потреба витонченим розум». При вдумливому розгляді виявляється, що на кожне подібну проблему у користувачів MapInfo є своє рішення у вигляді «болта на 28 з лівою різьбою». Модернізується, причому без особливих зусиль, все кошти оформлення, нехай і за допомогою різноманітних хитрощів.
Про редагуванні стилів ліній говорилося в попередній статті. а зараз мова піде про редагування заливок майданних об'єктів в MapInfo Professional.
Заливки майданних об'єктів MapInfo
Термін «заливка» стосовно майданних об'єктів в російськомовній версії MapInfo Professional, як такої, не використовується. Замість цього введений термін «штрихування» (?!), В чому можна переконатися, відкривши діалог оформлення майданного об'єкта:
Складно зрозуміти, чому саме так переведений термін «Fill» (fiil (en) -> заливка) англомовної версії (скріншот з версії MapInfo 5.5):
Як би там не було, різночитання локалізацій програми не повинно вводити в збентеження, «говоримо - партія, маємо на увазі - Ленін», тобто мова все одно піде саме про заповнення контурів майданних об'єктів зазначеним малюнком за певними правилами.
Саме «малюнком», до речі. Заливки в MapInfo Ніяк не векторні, а являють собою растрове зображення, що тиражується по площі контуру.
ресурси програми
Окремого файлу (каталогу) для розміщення зразків заливок, за подобою MAPINFOW.PEN або / CUSTSYMB, в MapInfo немає. Замість цього використовується завантаження зображень з файлу ресурсів, нікого мульти-файлу, в який можуть входити дані абсолютно будь-якого типу, будь то строкові дані, зображення, або цілі файли. Скомпільовані ресурси можуть зберігатися в різних форматах. У разі Windows-програм це, найімовірніше, EXE-файли або, як у справжньому випадку, DLL (динамічно підключається).
Перш ніж починати роботу, необхідно врахувати наступні моменти:
Розміщення файлу ресурсів
Як говорилося вже, зразки заливок MapInfo зберігаються в динамічних бібліотеках (DLL) в кореневому каталозі програми. Імена цих бібліотек змінювалися для кожної версії. Нижче наведена зведена відомість бібліотек з ресурсами зразків заливок для різних версій MapInfo:
Тобто як видно з наведеної таблиці, з версії 5.0 до версії 10.0 імена бібліотеки ресурсів мали вигляд MIRES (MapInfo RESource) + номер версії. У версії 10 імена позбулися цифрового постфікса. Для версій 11.х і 12.0 бібліотека має ім'я micore (mapinfo core). На рівні версії 12.5 (останньої на поточний момент) бібліотека зазнала значних змін і отримала ім'я MIAuxResources.
Файл ресурсів може містити будь-які дані. Вони структуровані за типами і назви цих типів строго регламентовані:
Як видно з наведених скріншотів, склад ресурсів змінювався з часом. Так, на нижніх версіях DLL представляла банальну «звалище» всіх мислимих ресурсів програми: іконки панелі інструментів, клавіші-акселератори, діалоги програми, курсори та інше. На версіях вище зникають діалоги і акселератори, з'являється новий тип для іконок панелі інструментів, хоча і старі іконки залишаються. І на етапі останньої версії в DLL тільки 3 типи, причому два з них, по суті, службові.
Але, з усього різноманіття представлених типів, для редагування зразків заливок цікавий тільки розділ типу «Bitmap». Bitmap - це і є растрове зображення, зазвичай в форматі BMP.
Зображення в розділі Bitmap відсортовані по зростаючим номерам:
Треба зауважити, що і сам розділ Bitmap зазнавав змін від версії до версії. На нижніх версіях, крім зразків заливки, в цей тип також були записані іконки кнопок деяких діалогів (місце розташування підпису, вид діаграми та ін.). Номери зображень з заливаннями при цьому мали номер менше 900, інші ж, відповідно, більше:
MIAuxResources .dll (файл ресурсів останньої версії програми) Bitmap містить вже виключно зразки заливок. Тобто очевидно, що відбувається поступове упорядкування внутрішньої структури програми, що, безумовно, обнадіює.
Крім того, треба згадати, що кількість зразків заливок також змінювалося з часом:
Кількість зразків заливок
Параметри зразка заливки
Самі ж зразки заливки має низку характеристик, які необхідно враховувати при роботі з ними.
формат зображення
Допустимі будь-які растрові зображення у форматі BMP і тільки в BMP. Спроба використовувати зображення іншого формату приведе до завантаження останнього в розділ, відмінний від Bitmap. В кращому випадку. Або до помилки структури DLL - в гіршому.
Розмір зображення
На нижніх версіях зразки були строго 8 * 8 пікселів (px). З підвищенням версії стали отримувати розміри 16 × 16 px, а згодом і 32 × 32 px. Експериментально було встановлено, що загрожують можна зображення будь-якого розміру і будь-яких пропорцій. Вони будуть коректно відображатися в списку і на об'єкті, але великі зображення суттєво уповільнюють їх промальовування.
колір зображення
Експериментально було встановлено, що можна використовувати будь-які кольори при оформленні зразків заливок. Однак, необхідно враховувати, що маски кольору за замовчуванням наступні: колір підкладки - білий, колір візерунка - чорний. При використанні відмінних кольорів не буде відбуватися зміна кольору підкладки / візерунка в діалозі настройки стилю об'єкта.
Глибина кольору зображення
За замовчуванням, всі зразки заливок зі стандартної поставки мають глибину кольору 1 bpp (біт-на-піксель), і індексовану, відповідно, палітру. Експериментально було встановлено, що використання індексованої палітри при глибині кольору відмінною від 1 bpp призводить до помилки структури DLL. Таким чином, допустимо використання або монохромних зображень, або повнокольорових з глибиною 16 і більше bpp.
Приведення до масштабу
Як відомо, заливки майданних об'єктів MapInfo, так само як і лінії, є немасштабіруемимі, тобто вид умовного знака не змінюються в залежності від виставленого масштабу. І так само, як і в випадку з лініями. для коректного відображення заливки в готовій карті, зразок необхідно готувати під конкретний масштаб.
Растрове зображення зразка заливки вимірюється в пікселях. Розмір пікселя безпосередньо залежить від дозволу зображення. Внутрішнє дозвіл MapInfo дорівнює 96 DPI. Таким чином, розмір пікселя для MapInfo становить:
1 дюйм / 96 DPI = 25,4 мм / 96 DPI = 0,26458 (3) мм ≈ 0,265 мм
Виходячи з цього, можна створювати елементи зразка заливки, які будуть більш-менш відповідати вимогам до оформлення в певному масштабі.
практичні приклади
Для ілюстрації всього сказаного, нижче будуть надані практичні приклади створення і зміни зразків заливки майданних об'єктів MapInfo.
Приклади будуть реалізовані на прикладі файлу ресурсів MapInfo 12.5 (32-bit). Для роботи з файлом ресурсів буде використовуватися програма Resource Hacker 4.2.5. Для редагування зображень буде використовуватися програма MicroSoft Paint 6.3.
Необхідно згадати кілька важливих моментів, пов'язаних з редагуванням файлів ресурсів програми (і не тільки MapInfo Professional).
Крім того, вкрай бажано заздалегідь зробити резервну копію оригінальної DLL. Незважаючи на всю незначимість зроблених змін, необхідно розуміти, що виробляється все ж несанкціоноване втручання в скомпільований код програми. З непередбачуваними, само собою, наслідками.
І, нарешті, самий «тонкий» момент, безпосередньо пов'язаний з попереднім абзацом. Втручання в скомпільований код програми, його зміна формально (формально!) Порушують права правовласника і позбавляють користувача технічної підтримки. Тому резервну копію оригінальної DLL мати необхідно в обов'язковому порядку.
Створення та редагування зображення
Для прикладу і подальшого використання воспроізведём умовний знак «Лугова трав'яниста рослинність висотою менше 1 м» (№369, «Умовні знаки для топографічної карти масштабу 1: 10000», М. «Надра», 1977):
- довжина штриха 0,8 мм відповідає 3 px;
- відстань між штрихами 0,6 мм відповідає 2 px;
- Відстань між знаками 4,0 мм відповідає 16 px.
Таким чином, поле для зразка заливки можна створювати рівним 32 × 32 px:
Створення зразка заливки
Для створення зразка заливки майданних об'єктів MapInfo запустимо програму Resource Hacker і завантажимо в неї файл ресурсів MIAuxResources.dll (меню File → Open ...). Після розгорнемо розділ Bitmap, виділивши його в лівому полі і виконавши команду меню View → Expand Treeview.
Як видно, останній номер зразка заливки - 183. Число після номера означає локаль мови (1033), для якого створений даний ресурс. Ці дані необхідно запам'ятати.
Після цього викличемо діалог додавання нового довічного ресурсу (меню Action → Add Single Binary or Image Resource ...):
Потім, по кнопці Select File ... виберемо підготовлений файл 369.BMP.
Поля діалогу повинні прийняти вигляд:
- Resource Type - Bitmap (замість RCDATA);
- Resource Name - 184;
- Resource Language - не заповнено.
За натисканні кнопки Add Resource зразок заливки буде додано до розділу Bitmap під номером 184:
Залишається виконати необов'язкову маніпуляцію - змінити мову ресурсу. Для цього виконаємо команду меню Action → Change Language for this Resource ... і в діалозі, що заповнимо поле Lang. ID.
Тепер залишається тільки зберегти відредагований файл (меню File → Save) і скопіювати його в кореневий каталог MapInfo.
Зміна зразка заливки
Для зміни зразка заливки майданних об'єктів MapInfo повторимо початкові дії, описані вище, і перейдемо до ресурсу 184:
Тепер необхідно витягти зображення ресурсу для подальшого редагування. Для цього виконаємо команду меню Action → Save * .bmp resource ... і збережемо зображення в файл під ім'ям 183.bmp.
Зберігши змінений малюнок, повернемося в Resource Hacker до ресурсу 183 і виконаємо команду меню Action → Replace Bitmap .... У діалоговому вікні заміни зображення по кнопці Open file with new bitmap ... виберемо змінений файл 183.BMP:
Після натискання кнопки Replace зображення зразка заливки буде замінено:
Тепер залишається тільки зберегти відредагований файл (меню File → Save) і скопіювати його в кореневий каталог MapInfo.