метафайл windows что это
По сути, метафайл хранит список записей, состоящий из команд рисования, определений свойств и графических объектов для отображения изображения на экране. Используемые команды рисования тесно связаны с командами API интерфейса графического устройства (GDI), используемыми для рисования в Microsoft Windows.
СОДЕРЖАНИЕ
История
Структура метафайла
Файлы WMF и EMF обрабатывают объектную обработку иначе, чем записи EMF + в файлах EMF. В процессе обработки файлов WMF и EMF записи считываются в таблицу объектов после определения объекта. Если объект удален, объект удаляется из таблицы, и идентификатор можно использовать повторно. Примечательно, что объект не будет использоваться, пока он не будет специально выбран во время воспроизведения записи. Это отличается от файлов EMF +, которые также используют ассоциативный массив через хэш-карту, которая записывает объект вместе с идентификатором объекта. Однако, в отличие от файлов WMF и EMF, которые могут удалять объект, когда создается новый объект, имеющий тот же индекс, что и существующий объект, запись в таблице заменяется новым объектом. EMF-файлу также не нужно специально выбирать объект перед его использованием.
Записи, отличные от записей управления, могут быть в значительной степени сгруппированы в записи растровых изображений, записи чертежей, записи объектов, записи состояния и записи перехода.
Записи растровых изображений
Записи чертежей
Записи чертежей производят вывод графики.
Записи об объектах
Графическими объектами могут быть кисти (определяет стиль, цвет и узор кисти, которые определяют, как рисовать область графики), шрифты (определяют свойства, которые влияют на отображение текста), палитры (задают цвета как значения, не зависящие от устройства, определяется приложением), перьями (задает графические атрибуты линии) и областями (которые определяют сегменты линии и кривой, определяющие форму).
Государственные записи
Записи состояния управляют графическими свойствами контекста устройства воспроизведения.
Имя | Описание |
---|---|
META_ANIMATEPALETTE | Переопределяет записи в логической палитре, которая определена в контексте устройства воспроизведения с помощью указанного объекта палитры. |
META_EXCLUDECLIPRECT | Устанавливает область отсечения, которая определена в контексте устройства воспроизведения, равной существующей области отсечения за вычетом указанного прямоугольника. |
META_INTERSECTCLIPRECT | Устанавливает область отсечения, которая определена в контексте устройства воспроизведения, на пересечение существующей области отсечения и указанного прямоугольника. |
META_MOVETO | Устанавливает позицию вывода в контексте устройства воспроизведения в указанную точку. |
META_OFFSETCLIPRGN | Перемещает область отсечения, определенную в контексте устройства воспроизведения, на указанные смещения. |
META_OFFSETVIEWPORTORG | Перемещает начало координат области просмотра в контексте устройства воспроизведения на заданные горизонтальные и вертикальные смещения. |
META_OFFSETWINDOWORG | Перемещает исходную точку окна вывода в контексте устройства воспроизведения на заданные горизонтальные и вертикальные смещения. |
META_REALIZEPALETTE | Сопоставляет записи из логической палитры, которая определена в контексте устройства воспроизведения, с системной палитрой. |
META_RESIZEPALETTE | Переопределяет размер логической палитры, определенной в контексте устройства воспроизведения. |
META_RESTOREDC | Восстанавливает контекст устройства воспроизведения из ранее сохраненного контекста устройства. |
META_SAVEDC | Сохраняет контекст устройства воспроизведения для последующего извлечения. |
META_SCALEVIEWPORTEXT | Масштабирует горизонтальную и вертикальную границы области просмотра, которая определена в контексте устройства воспроизведения, с использованием соотношений, образованных указанными множителями и делителями. |
META_SCALEWINDOWEXT | Масштабирует горизонтальные и вертикальные размеры окна вывода, которое определено в контексте устройства воспроизведения, с использованием соотношений, образованных указанными множителями и делителями. |
META_SETBKCOLOR | Устанавливает заданный цвет фона в контексте устройства воспроизведения. |
META_SETBKMODE | Устанавливает режим фонового микширования в контексте устройства воспроизведения. |
META_SETLAYOUT | Определяет ориентацию макета в контексте устройства воспроизведения. |
META_SETMAPMODE | Определяет режим сопоставления в контексте устройства воспроизведения. |
META_SETMAPPERFLAGS | Определяет алгоритм, который использует средство сопоставления шрифтов при сопоставлении логических шрифтов с физическими шрифтами. |
META_SETPALENTRIES | Определяет значения цвета RGB в диапазоне записей в логической палитре, которая определяется в контексте устройства воспроизведения. |
META_SETPOLYFILLMODE | Определяет режим заливки многоугольника в контексте устройства воспроизведения для графических операций, заполняющих многоугольники. |
META_SETRELABS | Неиспользованная запись. |
META_SETROP2 | Определяет режим смешивания работы с растром переднего плана в контексте устройства воспроизведения. |
META_SETSTRETCHBLTMODE | Определяет режим растяжения растрового изображения в контексте устройства воспроизведения. |
META_SETTEXTALIGN | Определяет значения выравнивания текста в контексте устройства воспроизведения. |
META_SETTEXTCHAREXTRA | Определяет межсимвольный интервал для выравнивания текста в контексте устройства воспроизведения. |
META_SETTEXTCOLOR | Определяет цвет текста переднего плана в контексте устройства воспроизведения. |
META_SETTEXTJUSTIFICATION | Определяет количество места, которое нужно добавить для разрыва символов в строке выровненного текста. |
META_SETVIEWPORTEXT | Определяет горизонтальную и вертикальную границы области просмотра в контексте устройства воспроизведения. |
META_SETVIEWPORTORG | Определяет источник области просмотра в контексте устройства воспроизведения. |
META_SETWINDOWEXT | Определяет горизонтальные и вертикальные размеры окна вывода в контексте устройства воспроизведения. |
META_SETWINDOWORG | Определяет источник окна вывода в контексте устройства воспроизведения. |
Записи о побегах
Следующие escape-записи составляют файл WMF.
После того, как Стив Гибсон обвинил Microsoft в преднамеренном внедрении бэкдора в свой код, Марк Руссинович представил опровержение и заявил, что:
Питер Ферри из Symantec Security Response, США, также не согласен с Гибсоном, отметив, что:
Как и файлы WMF, записи можно классифицировать по функциям, однако в файлах EMF больше типов записей, чем в файлах WMF. Записи могут быть классифицированы как элементы управления, растровые изображения, обрезки, комментарии, рисование, экранирование, создание объекта, манипулирование объектами, OpenGL, скобки пути, записи состояния и преобразования.
Существуют также сжатые версии метафайлов Windows, известные как сжатый метафайл Windows (WMZ) и сжатый расширенный метафайл Windows (EMZ), которые в основном представляют собой сжатые с помощью gzip файлы WMF и EMF соответственно.
Реализации
Содержание
История
Исходный 16-битный формат файла WMF был полностью указан в томе 4 документация Windows 3.1 SDK 1992 года (по крайней мере, если она сочетается с описаниями отдельных функций и структур в других томах), но эта спецификация расплывчата по некоторым деталям. Эти руководства были опубликованы в виде печатных книг, доступных в книжных магазинах без переходов по EULA или других необычных лицензионных ограничений (просто общее предупреждение о том, что при покупке в составе пакета программного обеспечения программное обеспечение будет подлежат одному).
Структура метафайлов
Инкапсулированные контрольными записями записи, составляющие само изображение. Эти записи работают в так называемом контексте устройства воспроизведения, который представляет собой набор свойств и объектов, составляющих графическую среду устройства, когда метафайл «воспроизводится» на этом устройстве вывода.
Другие записи. чем управляющие записи могут быть в значительной степени сгруппированы в записи растровых изображений, записи чертежей, записи объектов, записи состояний и записи перехода.
Записи растрового изображения
Записи чертежа
Записи чертежа производят графический вывод.
Объект записи
Графические объекты могут быть кистями (определяет стиль, цвет и узор кисти, который определяет, как для рисования области рисунка), шрифтов (определяет свойства, которые влияют на отображение текста), палитры (задает цвета как независимые от устройства значения, определенные приложением), перья (задает графические атрибуты линии) и области (которые определяют сегменты линии и кривой, определяющие форму).
Записи состояния
Записи состояния управляют графическими свойствами контекста устройства воспроизведения.
Escape-записи
Следующие escape-записи составляют файл WMF.
После того, как Стив Гибсон из Gibson Research Corporation обвинил Microsoft в преднамеренном внедрении бэкдора в свой код, Марк Руссинович представил опровержение и заявил, что:
. все было по-другому, когда формат был разработан. В Windows 3.1 код модели «большой» памяти по своей природе не зависит от местоположения, и Windows никогда не была исправлена, поэтому и Windows, и приложение могли просто скопировать функцию приложения в файл WMF и предположить, что она будет работать при воспроизведении одним и тем же приложением в более поздний сеанс запуска. В любом случае неясно, предполагали ли разработчики приложения, создающие метафайлы на диске с процедурами прерывания. Кроме того, как Стивен Тулуза из Microsoft указал в опровержении Microsoft утверждений Стива, ландшафт безопасности в начале 1990-х сильно отличался от сегодняшнего, и всему коду, включая тот, который хранится в файле WMF, по своей сути доверяли. 319>Питер Ферри из Symantec Security Response, США, также не согласился с Гибсоном, отметив, что:
Как и файлы WMF, записи могут быть классифицированы по функциям, однако есть больше записей типов в файлах EMF, чем в файлах WMF. Записи могут быть классифицированы как элементы управления, растровые изображения, обрезки, комментарии, рисование, экранирование, создание объекта, манипулирование объектами, OpenGL, скобки пути, записи состояния и преобразования.
С выпуском Windows XP был представлен формат расширенного формата метафайлов плюс расширения (EMF +). EMF + предоставляет способ сериализации вызовов API GDI + таким же образом, как WMF / EMF хранит вызовы GDI.
Существуют также сжатые версии метафайлов Windows, известные как сжатый метафайл Windows (WMZ) и сжатый расширенный метафайл Windows (EMZ), которые в основном представляют собой сжатые gzip файлы WMF и EMF соответственно.
Реализации
WMF – Метафайл Windows (Windows Metafile)
Расширение WMF
Чем открыть файл WMF
В Windows: ACD Systems ACDSee, Adobe Illustrator CC, IMSI TurboCAD Deluxe, CorelDRAW Graphics Suite, Corel PaintShop Pro, ACD Systems Canvas, MAGIX Xara Photo & Graphic Designer, Newera Graphics Converter Pro, Microsoft Windows Photo Viewer, Microsoft Picture It!, Inkscape, XnView, IrfanView, WildBit Viewer, Revelation Natural Art, TreeView, PhotoFiltre Studio, Ability Photopaint, Ultimate Paint
В Mac OS: IMSI TurboCAD Deluxe, Adobe Illustrator CC, Cristallight WMF Converter Pro, Apple QuickTime Player with Flip4Mac WMV Components, Inkscape
В Linux: Inkscape, GIMP
Кроссплатформенное ПО: OpenOffice.org Draw
Описание расширения WMF
Популярность:
Разработчик: Microsoft
Существуют также сжатые версии метафайлов, известных как сжатый метафайл Windows – Compressed Windows Metafile (.WMZ) и сжатый улучшенный метафайл Windows – Compressed Windows Enhanced Metafile (.EMZ).
MIME тип: application/x-msmetafile, application/wmf, application/x-wmf, image/wmf, image/x-wmf, image/x-win-metafile, zz-application/zz-winassoc-wmf
HEX код: D7 CD C6 9A 00 00, 01 00 09 00 00 03
ASCII, расш. код: ЧНЖ
Другие программы, связанные с расширением WMF
Относится к разделу Игры.
Популярность:
Metafile Класс
Определение
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет графический метафайл. Метафайл содержит записи, описывающие последовательность графических операций, которые могут быть записаны (созданы) и воспроизведены (выведены на экран). Этот класс не наследуется.
Примеры
В следующем примере кода показано, как создать Metafile и использовать PlayRecord метод.
Комментарии
Конструкторы
Инициализирует новый экземпляр класса Metafile из указанного дескриптора.
Инициализирует новый экземпляр класса Metafile из указанного дескриптора контекста устройства и перечисление EmfType, определяющее формат Metafile.
Инициализирует новый экземпляр класса Metafile из указанного дескриптора контекста устройства и перечисление EmfType, определяющее формат Metafile. Для определения имени файла может использоваться строка.
Инициализация нового экземпляра класса Metafile из указанного контекста устройства, ограниченного указанным прямоугольником.
Инициализация нового экземпляра класса Metafile из указанного контекста устройства, ограниченного указанным прямоугольником, где используются указанные единицы измерения.
Инициализация нового экземпляра класса Metafile из указанного контекста устройства, ограниченного указанным прямоугольником, где используются заданная единица измерения, а также перечисления EmfType, определяющего формат Metafile.
Инициализация нового экземпляра класса Metafile из указанного контекста устройства, ограниченного указанным прямоугольником, где используются заданная единица измерения, а также перечисления EmfType, определяющего формат Metafile. Для назначения имени файлу может быть предоставлена строка.
Инициализация нового экземпляра класса Metafile из указанного контекста устройства, ограниченного указанным прямоугольником.
Инициализация нового экземпляра класса Metafile из указанного контекста устройства, ограниченного указанным прямоугольником, где используются указанные единицы измерения.
Инициализация нового экземпляра класса Metafile из указанного контекста устройства, ограниченного указанным прямоугольником, где используются заданная единица измерения, а также перечисления EmfType, определяющего формат Metafile.
Инициализация нового экземпляра класса Metafile из указанного контекста устройства, ограниченного указанным прямоугольником, где используются заданная единица измерения, а также перечисления EmfType, определяющего формат Metafile. Для назначения имени файлу может быть предоставлена строка.
Инициализация нового экземпляра класса Metafile из указанного дескриптора и заголовка WmfPlaceableFileHeader.
Инициализирует новый экземпляр класса Metafile из указанного потока данных.
Инициализирует новый экземпляр класса Metafile из указанного потока данных.
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства и перечисления EmfType, определяющего формат Metafile.
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства и перечисления EmfType, определяющего формат Metafile. Также может быть добавлена строка, содержащая описательное имя нового объекта Metafile.
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства и структуры Rectangle, определяющей прямоугольник, ограничивающий новый объект Metafile.
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства и структуры Rectangle, которая определяет прямоугольник, ограничивающий новый объект Metafile, и предоставленных единиц измерения.
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства, структуры Rectangle, определяющей прямоугольник, ограничивающий новый объект Metafile, предоставленных единиц измерения и перечисления EmfType, определяющего формат Metafile.
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства, структуры Rectangle, определяющей прямоугольник, ограничивающий новый объект Metafile, предоставленных единиц измерения и перечисления EmfType, определяющего формат Metafile. Также может быть добавлена строка, содержащая описательное имя нового объекта Metafile.
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства и структуры RectangleF, определяющей прямоугольник, ограничивающий новый объект Metafile.
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства и структуры RectangleF, которая определяет прямоугольник, ограничивающий новый объект Metafile, и предоставленных единиц измерения.
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства, структуры RectangleF, определяющей прямоугольник, ограничивающий новый объект Metafile, предоставленных единиц измерения и перечисления EmfType, определяющего формат Metafile.
Инициализация нового экземпляра класса Metafile из указанного потока данных, дескриптора Windows контекста устройства, структуры RectangleF, определяющей прямоугольник, ограничивающий новый объект Metafile, предоставленных единиц измерения и перечисления EmfType, определяющего формат Metafile. Также может быть добавлена строка, содержащая описательное имя нового объекта Metafile.
Инициализирует новый экземпляр класса Metafile из указанного имени файла.
Инициализирует новый экземпляр класса Metafile c указанным именем файла.
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства и перечислением EmfType, определяющим формат Metafile.
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства и перечислением EmfType, определяющим формат Metafile. Также может быть добавлена описательная строка.
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства и структурой Rectangle, которая определяет прямоугольник, ограничивающий новый объект Metafile.
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства и структурой Rectangle, которая определяет прямоугольник, ограничивающий новый объект Metafile, а также заданными единицами измерения.
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства, структурой Rectangle, которая определяет прямоугольник, ограничивающий новый объект Metafile, заданными единицами измерения и перечислением EmfType, определяющим формат Metafile.
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства, структурой Rectangle, которая определяет прямоугольник, ограничивающий новый объект Metafile, заданными единицами измерения и перечислением EmfType, определяющим формат Metafile. Также может быть добавлена описательная строка.
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства и структурой Rectangle, которая определяет прямоугольник, ограничивающий новый объект Metafile, а также заданными единицами измерения. Также может быть добавлена описательная строка.
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства и структурой RectangleF, которая определяет прямоугольник, ограничивающий новый объект Metafile.
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства и структурой RectangleF, которая определяет прямоугольник, ограничивающий новый объект Metafile, а также заданными единицами измерения.
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства, структурой RectangleF, которая определяет прямоугольник, ограничивающий новый объект Metafile, заданными единицами измерения и перечислением EmfType, определяющим формат Metafile.
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства, структурой RectangleF, которая определяет прямоугольник, ограничивающий новый объект Metafile, заданными единицами измерения и перечислением EmfType, определяющим формат Metafile. Также может быть добавлена описательная строка.
Инициализация нового экземпляра класса Metafile указанным именем файла, дескриптором Windows контекста устройства и структурой RectangleF, которая определяет прямоугольник, ограничивающий новый объект Metafile, а также заданными единицами измерения. Также может быть добавлена описательная строка.
Свойства
Возвращает флаги атрибутов для пиксельных данных этого объекта Image.
Возвращает массив идентификаторов GUID, представляющих размеры кадров в объекте Image.
Возвращает высоту объекта Image в пикселях.
Возвращает горизонтальное разрешение объекта Image в пикселях на дюйм.
Возвращает или задает палитру цветов, используемую для объекта Image.
Возвращает ширину и высоту данного изображения.
Возвращает формат пикселей для этого объекта Image.
Возвращает идентификаторы элементов свойств, хранящихся в объекте Image.
Возвращает все элементы свойств (части метаданных), хранящихся в объекте Image.
Возвращает формат файла этого объекта Image.
Возвращает ширину и высоту изображения в пикселях.
Возвращает или задает объект, предоставляющий дополнительные данные об изображении.
Возвращает вертикальное разрешение объекта Image в пикселях на дюйм.
Возвращает ширину объекта Image в пикселях.
Методы
Создает точную копию данного объекта Image.
Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.
Освобождает все ресурсы, используемые этим объектом Image.
Освобождает неуправляемые ресурсы, используемые объектом Image, а при необходимости освобождает также управляемые ресурсы.
Определяет, равен ли указанный объект текущему объекту.
Возвращает границы изображения в указанных единицах измерения.
Возвращает информацию о параметрах, поддерживаемых указанным кодировщиком изображения.
Возвращает количество кадров указанного размера.
Служит хэш-функцией по умолчанию.
Возвращает дескриптор Windows расширенного объекта Metafile.
Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.
Возвращает рабочую область метаданных MetafileHeader, связанную с соединением Metafile.
Возвращает объект MetafileHeader, связанный с заданным объектом Metafile.
Возвращает объект MetafileHeader, связанный с заданным объектом Metafile.
Возвращает объект MetafileHeader, связанный с заданным объектом Metafile.
Возвращает объект MetafileHeader, связанный с заданным объектом Metafile.
Возвращает указанный элемент свойства из объекта Image.
Возвращает эскиз для этого объекта Image.
Возвращает объект Type для текущего экземпляра.
Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.
Создает неполную копию текущего объекта Object.
Создает неполную копию текущего объекта MarshalByRefObject.
Воспроизводит отдельную запись метафайла.
Удаляет указанный элемент свойства из этого Image.
Поворачивает, зеркально отражает, либо поворачивает и зеркально отражает объект Image.
Сохраняет данное изображение в указанный поток с заданным кодировщиком и определенными параметрами кодировщика изображения.
Сохраняет данное изображение в указанный поток в указанном формате.
Сохраняет объект Image в указанный файл или поток.
Сохраняет объект Image в указанный файл с заданным кодировщиком и определенными параметрами кодировщика изображения.
Сохраняет объект Image в указанный файл в указанном формате.
Добавляет кадр в файл или поток, указанный в предыдущем вызове метода Save. Используйте данный метод для сохранения выбранных кадров из многокадрового изображения в другое многокадровое изображение.
Добавляет кадр в файл или поток, указанный в предыдущем вызове метода Save.
Выделяет кадр, определяемый размером и индексом.
Сохраняет элемент свойства (часть метаданных) в Image.
Возвращает строку, представляющую текущий объект.
Явные реализации интерфейса
Заполняет объект SerializationInfo данными, необходимыми для сериализации целевого объекта.