Windows Metafile
WMF (англ. Windows MetaFile) — універсальний формат векторних графічних файлів для додатків Windows. Використовується для збереження колекції векторних зображень Microsoft Clip Gallery. Формат був розроблений компанією Microsoft і є неодмінною частиною Windows, оскільки зберігає послідовність апаратно-незалежних функцій GDI (Graphical Device Interface), що виводять зображення безпосередньо на заданий графічний пристрій (екран, принтер тощо). WMF використовують для збереження образу вікна і його подальшого відновлення, а також при перенесенні інформації за допомогою буфера обміну (clipboard). Операційна система Windows дозволяє швидко і просто взаємодіяти із файлами у форматі, що може бути відкритим і за допомогою кросплатформених додатків GIMP (з попереднім растеризуванням) або Inkscape.
Розширення файлу: |
. |
---|---|
MIME-тип: |
image/x-wmf |
Розробник: | Microsoft |
Тип формату: | векторна графіка |
Розширений до: | EMF |
Розширення файлу: |
. |
---|---|
MIME-тип: |
image/x-emf |
Розробник: | Microsoft |
Тип формату: | векторна графіка |
Розширений з: | WMF |
Як формат векторної графіки WMF в тій чи іншій мірі підтримується і іншими потужнішими пакетами — AutoCAD, LibreOffice, і може використовуватися для обміну даними між ними.
Структура файлу
Файли WMF та EMF складаються із переліку записів, кожен з яких є певною командою з набором аргументів. Формати записів WMF та EMF схожі, проте мають деякі відмінності:
- В EMF додалися нові коди функцій
- Коди функцій EMF змінилися порівняно із WMF
- 16-бітні аргументи WMF стали 32-бітними у EMF
- Деякі функції у EMF отримали нові аргументи
Перелік типів записів WMF та EMF
WMF-запис | Код WMF-записн | EMF-запис | Код EMF-запису | Опис |
---|---|---|---|---|
EMR_HEADER | 0x00000001 | Заголовок | ||
EMR_POLYBEZIER | 0x00000002 | |||
EMR_POLYBEZIER16 | 0x00000055 | |||
META_POLYGON | 0x0324 | EMR_POLYGON | 0x00000003 | Намалювати замкнену криву |
EMR_POLYGON16 | 0x00000056 | |||
META_POLYLINE | 0x0325 | EMR_POLYLINE | 0x00000004 | |
EMR_POLYLINE16 | 0x00000057 | |||
EMR_POLYBEZIERTO | 0x00000005 | |||
EMR_POLYBEZIERTO16 | 0x00000058 | |||
META_POLYPOLYGON | 0x0538 | EMR_POLYPOLYGON | 0x00000008 | |
EMR_POLYPOLYGON16 | 0x0000005B | |||
META_SETWINDOWEXT | 0x020C | EMR_SETWINDOWEXTEX | 0x00000009 | Встановити розміри вікна (ширину та висоту) |
META_SETWINDOWORG | 0x020B | EMR_SETWINDOWORGEX | 0x0000000A | Встановити позицію лівого верхньго кута вікна (x та y) |
META_SETVIEWPORTEXT | 0x020E | EMR_SETVIEWPORTEXTEX | 0x0000000B | Встановити розміри пристрою виводу (ширину та висоту) |
META_SETVIEWPORTORG | 0x020D | EMR_SETVIEWPORTORGEX | 0x0000000C | Встановити позицію лівого верхнього кута пристрою виводу (x та y) |
EMR_SETBRUSHORGEX | 0x0000000D | |||
META_EOF | 0x0000 | EMR_EOF | 0x0000000E | Кінець файлу |
EMR_SETPIXELV | 0x0000000F | |||
META_SETMAPPERFLAGS | 0x0231 | EMR_SETMAPPERFLAGS | 0x00000010 | |
META_SETMAPMODE | 0x0103 | EMR_SETMAPMODE | 0x00000011 | Задає режим перетворення логічних одиниць вимірювання вікна в одиниці вимірювання пристрою виводу |
META_SETBKMODE | 0x0102 | EMR_SETBKMODE | 0x00000012 | Встановити режим заливки (0 - заливка вимкнена, 1 - заливка увімкнена) |
META_SETPOLYFILLMODE | 0x0106 | EMR_SETPOLYFILLMODE | 0x00000013 | |
META_SETROP2 | 0x0104 | EMR_SETROP2 | 0x00000014 | Встановити логічну операцію при малюванні (для накладання прозорого/інвертуючого зображення тощо) |
META_SETSTRETCHBLTMODE | 0x0107 | EMR_SETSTRETCHBLTMODE | 0x00000015 | |
META_SETTEXTALIGN | 0x012E | EMR_SETTEXTALIGN | 0x00000016 | Встановити горизонтальне та вертикальне вирівнювання (задається за допомогою флагів, об'єднаних логічним І) |
EMR_SETCOLORADJUSTMENT | 0x00000017 | |||
META_SETTEXTCOLOR | 0x0209 | EMR_SETTEXTCOLOR | 0x00000018 | Встановити колір тексту (32-бітний RGB0) |
META_SETBKCOLOR | 0x0201 | EMR_SETBKCOLOR | 0x00000019 | Встановити колір заливки (32-бітний RGB0) |
META_OFFSETCLIPRGN | 0x0220 | EMR_OFFSETCLIPRGN | 0x0000001A | |
META_MOVETO | 0x0214 | EMR_MOVETOEX | 0x0000001B | |
META_EXCLUDECLIPRECT | 0x0415 | EMR_EXCLUDECLIPRECT | 0x0000001D | |
META_INTERSECTCLIPRECT | 0x0416 | EMR_INTERSECTCLIPRECT | 0x0000001E | |
META_SCALEVIEWPORTEXT | 0x0412 | EMR_SCALEVIEWPORTEXTEX | 0x0000001F | Розтягнути пристрій виводу за горизонталлю та вертикаллю (вказується два дробових множники, по осі x і по осі y, кожен у вигляді двох цілих чисел — чисельника та знаменника дробу) |
META_SCALEWINDOWEXT | 0x0410 | EMR_SCALEWINDOWEXTEX | 0x00000020 | Розтягнути вікно за горизонталлю та вертикаллю (вказується два дробових множники, по осі x і по осі y, кожен у вигляді двох цілих чисел — чисельника та знаменника дробу) |
META_RESTOREDC | 0x0127 | EMR_RESTOREDC | 0x00000022 | Відновити стан пристрою виводу, попередньо збережений командою SAVEDC |
META_SELECTOBJECT | 0x012D | EMR_SELECTOBJECT | 0x00000025 | |
META_CREATEBRUSHINDIRECT | 0x02FC | EMR_CREATEBRUSHINDIRECT | 0x00000027 | |
META_DELETEOBJECT | 0x01f0 | EMR_DELETEOBJECT | 0x00000028 | |
EMR_ANGLEARC | 0x00000029 | |||
META_ELLIPSE | 0x0418 | EMR_ELLIPSE | 0x0000002A | |
META_RECTANGLE | 0x041B | EMR_RECTANGLE | 0x0000002B | |
META_ROUNDRECT | 0x061C | EMR_ROUNDRECT | 0x0000002C | |
META_ARC | 0x0817 | EMR_ARC | 0x0000002D | |
META_CHORD | 0x0830 | EMR_CHORD | 0x0000002E | |
META_PIE | 0x081A | EMR_PIE | 0x0000002F | |
META_SELECTPALETTE | 0x0234 | EMR_SELECTPALETTE | 0x00000030 | |
META_CREATEPALETTE | 0x00f7 | EMR_CREATEPALETTE | 0x00000031 | |
META_SETPALENTRIES | 0x0037 | EMR_SETPALETTEENTRIES | 0x00000032 | Встановити палітру |
META_RESIZEPALETTE | 0x0139 | EMR_RESIZEPALETTE | 0x00000033 | |
META_EXTFLOODFILL | 0x0548 | EMR_EXTFLOODFILL | 0x00000035 | |
META_LINETO | 0x0213 | EMR_LINETO | 0x00000036 | |
EMR_ARCTO | 0x00000037 | |||
EMR_SETARCDIRECTION | 0x00000039 | |||
EMR_SETMITERLIMIT | 0x0000003A | |||
EMR_STROKEPATH | 0x00000040 | |||
EMR_COMMENT | 0x00000046 | |||
META_FILLREGION | 0x0228 | EMR_FILLRGN | 0x00000047 | |
META_INVERTREGION | 0x012A | EMR_INVERTRGN | 0x00000049 | Інвертувати кольори в регіоні, що заданий об'єднанням множини прямокутників |
META_PAINTREGION | 0x012B | EMR_PAINTRGN | 0x0000004A | |
META_SELECTCLIPREGION | 0x012C | EMR_EXTSELECTCLIPRGN | 0x0000004B | |
META_BITBLT | 0x0922 | EMR_BITBLT | 0x0000004C | |
META_STRETCHBLT | 0x0B23 | EMR_STRETCHBLT | 0x0000004D | |
META_SETDIBTODEV | 0x0d33 | EMR_SETDIBITSTODEVICE | 0x00000050 | |
META_DIBSTRETCHBLT | 0x0b41 | EMR_STRETCHDIBITS | 0x00000051 | |
META_CREATEFONTINDIRECT | 0x02FB | EMR_EXTCREATEFONTINDIRECTW | 0x00000052 | |
META_CREATEPENINDIRECT | 0x02FA | EMR_EXTCREATEPEN | 0x0000005F | |
EMR_SETICMMODE | 0x00000062 | |||
EMR_CREATECOLORSPACE | 0x00000063 | |||
EMR_SETCOLORSPACE | 0x00000064 | |||
EMR_DELETECOLORSPACE | 0x00000065 | |||
EMR_GLSRECORD | 0x00000066 | |||
EMR_GLSBOUNDEDRECORD | 0x00000067 | |||
EMR_PIXELFORMAT | 0x00000068 | |||
EMR_FORCEUFIMAPPING | 0x0000006D | |||
EMR_COLORCORRECTPALETTE | 0x0000006F | |||
EMR_SETICMPROFILEA | 0x00000070 | |||
EMR_SETICMPROFILEW | 0x00000071 | |||
META_SETLAYOUT | 0x0149 | EMR_SETLAYOUT | 0x00000073 | Задає напрям виводу тексту та зображень - зліва-направо чі зправа-наліво (в останньому випадку можна вказати, чи потрібно виводити зображення переверненими зліва-направо) |
EMR_GRADIENTFILL | 0x00000076 | |||
EMR_SETLINKEDUFIS | 0x00000077 | |||
META_SETTEXTJUSTIFICATION | 0x020A | EMR_SETTEXTJUSTIFICATION | 0x00000078 | |
META_REALIZEPALETTE | 0x0035 | |||
META_SETRELABS | 0x0105 | |||
META_SETTEXTCHAREXTRA | 0x0108 | |||
META_DIBCREATEPATTERNBRUSH | 0x0142 | |||
META_OFFSETVIEWPORTORG | 0x0211 | |||
META_OFFSETWINDOWORG | 0x020F | |||
META_FLOODFILL | 0x0419 | |||
META_FRAMEREGION | 0x0429 | |||
META_ANIMATEPALETTE | 0x0436 | |||
META_TEXTOUT | 0x0521 | |||
META_SETPIXEL | 0x041F | |||
META_PATBLT | 0x061D | |||
META_SAVEDC | 0x001E | Зберегти стан пристрою виводу | ||
META_ESCAPE | 0x0626 | |||
META_DIBBITBLT | 0x0940 | |||
META_EXTTEXTOUT | 0x0a32 | |||
META_STRETCHDIB | 0x0f43 | |||
META_CREATEPATTERNBRUSH | 0x01F9 | |||
META_CREATEREGION | 0x06FF |