Обработка Windows Метафилы
Windows Формат Metafile - это формат файла изображения, который может содержать как векторную, так и растровую графику. Этот формат используется для хранения графических данных в памяти или файлах на диске. Метафайл хранит список вызовов функций в Windows Графический интерфейс устройства (GDI), который должен быть выполнен для отображения изображения на экране. Система интерпретирует и выполняет эти команды в контексте дисплея.
Раньше, Windows Metafile был единственным форматом векторного изображения, поддерживаемым Microsoft Word. Microsoft Word В настоящее время также поддерживается формат SVG, но формат метафайлов по-прежнему широко используется в документах Word. Кроме того, Metafile может быть форматом обмена для некоторых других приложений. Microsoft Визио. Основной целью Metafile является обеспечение обмена графической информацией между Windows приложения.
Существует 3 версии Windows Метафильм:
- WMF - магазины звонят в 16bit GDI.
- EMF - магазины звонят в Win32/GDI.
- Магазины EMF+ Metafile звонят в GDI+. EMF + Metafile также может быть двойным, описывая одну и ту же графику с частями EMF и EMF +.
Существующий вопрос с Windows Metafile не поддерживается большинством форматов, к которым обычно сохраняются документы. Поэтому необходимо преобразовать формат Metafile в другие растровые или векторные форматы. Легко конвертировать Windows Metafile для растрового изображения на .NET просто передавая его в GDI+, но это невозможно на других платформах, так как даже GDI+ не обеспечивает функциональность для извлечения векторной графики из Metafile. Для решения этих вопросов, Aspose.Words реализует собственную Windows Metafile Player, который способен воспроизводить формат Metafile как векторной, так и растровой графики на всех платформах.
Контролировать Aspose.Words Игрок Metafile
The MetafileRenderingOptions Класс позволяет контролировать метафайл плеера. Например, вы можете определить, как изображения метафайлов должны быть визуализированы с помощью rendering_mode свойство, которое имеет особое значение при преобразовании в растровые карты (см. ImageSaveOptions.metafile_rendering_options собственности).
Экономия на растровой карте работает иначе на платформах, чем .NET. Хотя .NET Рендеринг GDI+ - это ссылка, которая работает почти идеально даже для самого сложного формата метафайлов, на других платформах это может вызвать проблемы или вообще не поддерживаться.
Поддержка растровых операций
Растровые операции - это сложная функция метафайла, которая в настоящее время имеет ограниченную поддержку. Растровые операции доступны в форматах метафайлов WMF и EMF. Формат метафайла EMF+ не использует растровые операции напрямую, но может содержать части ЭМП, встроенные метафайлы WMF или ЭМП.
Существуют бинарные и тройные растровые операции:
- Бинарные растровые операции применяются к командам рисования пером, таким как линии рисования и кривые. При прорисовке линии цвет ручки сочетается с цветом растровой карты назначения (цвет соответствующего пикселя на поверхности устройства) с помощью заданных по битам логических операций с значениями шести цветов. Приведенный ниже пример изображения иллюстрирует эффект всех 16 операций двоичного растра, применяемых к 20 различным цветовым полосам. Сначала рисуются вертикальные цветовые полосы, горизонтальные полосы рисуются после каждой операции бинарного растра. Для простых случаев, R2Черный чернеет, R2не переворачивает цвет, R2_NOP не изменяет фон, и R2Белый рисует белым.
- Тернарные растровые операции применяются при рисовании растровых изображений. Они объединяют цвета соответствующих пикселей изображения растровой карты, кисти и растровой карты назначения, используя побитовые логические операции с заданными значениями шести цветов. Одной из наиболее распространенных целей использования тройных растровых операций является эмуляция прозрачности. Изображение, представленное в приведенном ниже примере, демонстрирует, как можно эмулировать прозрачность значка. Существует два типа растровых изображений: растровая карта маски b/w и растровая карта цвета. Во-первых, растровая карта маски рисуется с помощью растровой операции SRCAND. Он меняет область непрозрачных икон на черно-белую, оставляя прозрачную область неизменной. Затем вторая растровая карта рисуется с помощью растровой операции SRCINVERT. Он отображает цветовые пиксели на черной области, оставляя прозрачную область без изменений.
Растровые операции не могут быть преобразованы непосредственно в векторную графику. Aspose.Words эмулирует растровые операции путем частичной растеризации поверхности устройства, пораженной растровыми операциями. Для этой цели, emulate_raster_operations используется собственность.
Приведенный ниже пример показывает, как Aspose.Words Отображает метафайл в растровую карту, когда невозможно правильно отобразить некоторые записи метафайла в векторной графике:
# Load the document from disk.
doc = aw.Document(docs_base.my_dir + "Rendering.docx")
metafileRenderingOptions = aw.saving.MetafileRenderingOptions()
metafileRenderingOptions.emulate_raster_operations = False
metafileRenderingOptions.rendering_mode = aw.saving.MetafileRenderingMode.VECTOR_WITH_FALLBACK
saveOptions = aw.saving.PdfSaveOptions()
saveOptions.metafile_rendering_options = metafileRenderingOptions
doc.save(docs_base.artifacts_dir +"PdfSaveOptions.HandleRasterWarnings.pdf", saveOptions)
Настройки Metafile Fallback
Aspose.Words не поддерживает ряд функций метафайлов, которые являются наиболее сложными или редкими. В этом случае Aspose.Words может выполнять резервное копирование на другой тип проигрывателя метафайлов
Во-первых, Aspose.Words выполняет откат от векторного метафильного плеера к растру, которым он управляется rendering_mode собственность. Если функция резервного копирования отключена, Aspose.Words пытается воспроизвести некоторую графику замены вместо функций, которые не поддерживаются.
Aspose.Words успешно проигрывает метафайл в растр, используя GDI+ .NET, Что делает этот вариант обратного вызова безопасным.
Во-вторых, есть опция EMF+. Двойной метафайл, чтобы отыграть часть EMF + до части EMF. Он контролируется emf_plus_dual_rendering_mode. Если есть некоторые проблемы, возникающие при игре части ЭМП, то также может быть выполнен возврат к растру.
Что касается растровых операций, то emulate_raster_operations отключается, затем растровые операции рассматриваются как не поддерживаемые, что вызывает откат к растровому метафайловому проигрывателю, если он включен. Поэтому, если у вас есть метафайл с растровыми операциями, но вы не хотите использовать эмуляцию растровых операций и все же хотите получить векторный выход с замещающей графикой, то выберите MetafileRenderingMode.VECTOR.