Windows Metafile

WMF (англ. Windows MetaFile) — универсальный формат векторных графических файлов для Windows-приложений. Используется для хранения коллекции графических изображений Microsoft Clip Gallery. Формат разработан Microsoft и является неотъемлемой частью Windows, так как сохраняет последовательность аппаратно-независимых функций GDI (Graphical Device Interface), непосредственно выводящих изображение в заданный контекст графического устройства (на экран, на принтер и т.п.). Очень часто WMF неявно используется для сохранения образа окна вывода программы и его последующего восстановления, а также при переносе информации через буфер обмена (clipboard). Из MS Windows запись и чтение в файл этого формата осуществляются чрезвычайно просто и быстро. Файл этого формата может быть открыт с помощью кроссплатформенных программ GIMP (с предварительной растеризацией) и Inkscape. На платформе Macintosh аналогичную роль играет формат PICT.

Windows Metafile
Расширение .wmf, .wmz
MIME-тип image/x-wmf
Разработчик Microsoft
Тип формата векторная графика
Развит в EMF
Сайт docs.microsoft.com/en-us…
Enhanced Metafile
Расширение .emf, .emz
MIME-тип image/x-emf
Разработчик Microsoft
Тип формата векторная графика
Расширен из WMF
Сайт docs.microsoft.com/en-us…

Как формат векторной графики WMF в той или иной степени поддерживается многими мощными приложениями AutoCAD, OpenOffice.org, Adobe Illustrator, и может использоваться для обмена данными между ними.

Структура файла

Файлы WMF и EMF состоят из списка записей, каждая из которых представляет собой определённую команду с набором аргументов. Форматы записей WMF и EMF похожи, однако есть следующие основные различия:

  • В EMF добавились новые коды функций
  • В EMF коды функций изменились по сравнению с WMF
  • Аргументы, бывшие в WMF 16-битными, стали 32-битными в EMF
  • В некоторых функциях в EMF добавились новые аргументы

Список типов записей WMF и EMF

WMF-записьКод WMF-записиEMF-записьКод EMF-записиОписание
EMR_HEADER0x00000001Заголовок
EMR_POLYBEZIER0x00000002
EMR_POLYBEZIER160x00000055
META_POLYGON0x0324EMR_POLYGON0x00000003Нарисовать замкнутую ломаную линию
EMR_POLYGON160x00000056
META_POLYLINE0x0325EMR_POLYLINE0x00000004
EMR_POLYLINE160x00000057
EMR_POLYBEZIERTO0x00000005
EMR_POLYBEZIERTO160x00000058
META_POLYPOLYGON0x0538EMR_POLYPOLYGON0x00000008
EMR_POLYPOLYGON160x0000005B
META_SETWINDOWEXT0x020CEMR_SETWINDOWEXTEX0x00000009Установить размеры окна (ширину и высоту)
META_SETWINDOWORG0x020BEMR_SETWINDOWORGEX0x0000000AУстановить позицию левого верхнего угла окна (x и y)
META_SETVIEWPORTEXT0x020EEMR_SETVIEWPORTEXTEX0x0000000BУстановить размеры устройства вывода (ширину и высоту)
META_SETVIEWPORTORG0x020DEMR_SETVIEWPORTORGEX0x0000000CУстановить позицию левого верхнего угла устройства вывода (x и y)
EMR_SETBRUSHORGEX0x0000000D
META_EOF0x0000EMR_EOF0x0000000EКонец файла
EMR_SETPIXELV0x0000000F
META_SETMAPPERFLAGS0x0231EMR_SETMAPPERFLAGS0x00000010
META_SETMAPMODE0x0103EMR_SETMAPMODE0x00000011Задаёт режим преобразования логических единиц измерения окна в единицы измерения устройства вывода
META_SETBKMODE0x0102EMR_SETBKMODE0x00000012Установить режим заливки (0 - заливка выключена, 1 - заливка включена)
META_SETPOLYFILLMODE0x0106EMR_SETPOLYFILLMODE0x00000013
META_SETROP20x0104EMR_SETROP20x00000014Установить логическую операцию при рисовании (для накладывания прозрачного/инвертирующего изображения и т.п.)
META_SETSTRETCHBLTMODE0x0107EMR_SETSTRETCHBLTMODE0x00000015
META_SETTEXTALIGN0x012EEMR_SETTEXTALIGN0x00000016Установить горизонтальное и вертикальное выравнивание (задаётся при помощи флагов, объединённых через логическое ИЛИ)
EMR_SETCOLORADJUSTMENT0x00000017
META_SETTEXTCOLOR0x0209EMR_SETTEXTCOLOR0x00000018Установить цвет текста (32-битный RGB0)
META_SETBKCOLOR0x0201EMR_SETBKCOLOR0x00000019Установить цвет заливки (32-битный RGB0)
META_OFFSETCLIPRGN0x0220EMR_OFFSETCLIPRGN0x0000001A
META_MOVETO0x0214EMR_MOVETOEX0x0000001B
META_EXCLUDECLIPRECT0x0415EMR_EXCLUDECLIPRECT0x0000001D
META_INTERSECTCLIPRECT0x0416EMR_INTERSECTCLIPRECT0x0000001E
META_SCALEVIEWPORTEXT0x0412EMR_SCALEVIEWPORTEXTEX0x0000001FРастянуть устройство вывода по горизонтали и вертикали (указывается два дробных множителя, по x и по y, каждый в виде двух целых чисел - числителя и знаменателя дроби)
META_SCALEWINDOWEXT0x0410EMR_SCALEWINDOWEXTEX 0x00000020Растянуть окно по горизонтали и вертикали (указывается два дробных множителя, по x и по y, каждый в виде двух целых чисел - числителя и знаменателя дроби)
META_RESTOREDC0x0127EMR_RESTOREDC0x00000022Восстановить состояние устройства вывода в заранее сохранённое командой SAVEDC
META_SELECTOBJECT0x012DEMR_SELECTOBJECT0x00000025
META_CREATEBRUSHINDIRECT0x02FCEMR_CREATEBRUSHINDIRECT0x00000027
META_DELETEOBJECT0x01f0EMR_DELETEOBJECT0x00000028
EMR_ANGLEARC0x00000029
META_ELLIPSE0x0418EMR_ELLIPSE0x0000002A
META_RECTANGLE0x041BEMR_RECTANGLE0x0000002B
META_ROUNDRECT0x061CEMR_ROUNDRECT0x0000002C
META_ARC0x0817EMR_ARC0x0000002D
META_CHORD0x0830EMR_CHORD0x0000002E
META_PIE0x081AEMR_PIE0x0000002F
META_SELECTPALETTE0x0234EMR_SELECTPALETTE0x00000030
META_CREATEPALETTE0x00f7EMR_CREATEPALETTE0x00000031
META_SETPALENTRIES0x0037EMR_SETPALETTEENTRIES0x00000032Установить палитру
META_RESIZEPALETTE0x0139EMR_RESIZEPALETTE0x00000033
META_EXTFLOODFILL0x0548EMR_EXTFLOODFILL0x00000035
META_LINETO0x0213EMR_LINETO0x00000036
EMR_ARCTO0x00000037
EMR_SETARCDIRECTION0x00000039
EMR_SETMITERLIMIT0x0000003A
EMR_STROKEPATH0x00000040
EMR_COMMENT0x00000046
META_FILLREGION0x0228EMR_FILLRGN0x00000047
META_INVERTREGION0x012AEMR_INVERTRGN0x00000049Обратить цвета в регионе, заданном объединением множества прямоугольников
META_PAINTREGION0x012BEMR_PAINTRGN0x0000004A
META_SELECTCLIPREGION0x012CEMR_EXTSELECTCLIPRGN0x0000004B
META_BITBLT0x0922EMR_BITBLT0x0000004C
META_STRETCHBLT0x0B23EMR_STRETCHBLT0x0000004D
META_SETDIBTODEV0x0d33EMR_SETDIBITSTODEVICE0x00000050
META_DIBSTRETCHBLT0x0b41EMR_STRETCHDIBITS0x00000051
META_CREATEFONTINDIRECT0x02FBEMR_EXTCREATEFONTINDIRECTW0x00000052
META_CREATEPENINDIRECT0x02FAEMR_EXTCREATEPEN0x0000005F
EMR_SETICMMODE0x00000062
EMR_CREATECOLORSPACE0x00000063
EMR_SETCOLORSPACE0x00000064
EMR_DELETECOLORSPACE0x00000065
EMR_GLSRECORD0x00000066
EMR_GLSBOUNDEDRECORD0x00000067
EMR_PIXELFORMAT0x00000068
EMR_FORCEUFIMAPPING0x0000006D
EMR_COLORCORRECTPALETTE0x0000006F
EMR_SETICMPROFILEA0x00000070
EMR_SETICMPROFILEW0x00000071
META_SETLAYOUT0x0149EMR_SETLAYOUT0x00000073Задаёт направление вывода текста и изображений - слева-направо или справа-налево (в последнем случае можно указать, требуется ли выводить изображения отражёнными слева-направо)
EMR_GRADIENTFILL0x00000076
EMR_SETLINKEDUFIS0x00000077
META_SETTEXTJUSTIFICATION0x020AEMR_SETTEXTJUSTIFICATION0x00000078
META_REALIZEPALETTE0x0035
META_SETRELABS0x0105
META_SETTEXTCHAREXTRA0x0108
META_DIBCREATEPATTERNBRUSH0x0142
META_OFFSETVIEWPORTORG0x0211
META_OFFSETWINDOWORG0x020F
META_FLOODFILL0x0419
META_FRAMEREGION0x0429
META_ANIMATEPALETTE0x0436
META_TEXTOUT0x0521
META_SETPIXEL0x041F
META_PATBLT0x061D
META_SAVEDC0x001EСохранить состояние устройства вывода
META_ESCAPE0x0626
META_DIBBITBLT0x0940
META_EXTTEXTOUT0x0a32
META_STRETCHDIB0x0f43
META_CREATEPATTERNBRUSH0x01F9
META_CREATEREGION0x06FF

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.