Рушники Windows Метафайли

Windows Формат метафілу - формат файлів зображень, який може містити як векторну, так і растрову графіку. Цей формат використовується для зберігання даних графіки в пам’яті або на диску. Метафайл зберігає список викликів функцій Windows Графічний інтерфейс пристрою (GDI), який повинен бути виконаний для відображення зображення на екрані. Система інтерпретує та виконує ці команди в контексті відображення.

Раніше, Windows Метафайл - єдиний формат векторного зображення, що підтримується 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 в інші растрові або векторні формати. Легко конвертувати Windows Метафайл для растрового зображення на .NET просто переходячи його на GDI+, але це неможливе на інших платформах, оскільки навіть GDI+ не дає можливості витягти векторну графіку з Metafile. Для вирішення цих питань Aspose.Words реалізує власну Windows Метафайл-плеєр, який здатний відтворювати формат Metafile як векторний, так і растровий графік на всіх платформах.

Контроль Aspose.Words Метафайл плеєр

Про нас MetafileRenderingOptions клас дозволяє керувати метафайлом. Наприклад, ви можете визначити, як зображення метафайлу необхідно надати за допомогою rendering_mode майно, яке має особливий сенс при перетворенні на бітмапи (див. також ImageSaveOptions.metafile_rendering_options майно.

Збереження бітма на платформах, відмінних від .NETй В той час як .NET GDI+ є довідником, що працює практично ідеальною навіть для найскладнішого формату метафілу, на інших платформах вона може викликати проблеми або не підтримується.

Підтримує Растрові операції

Растрові операції – це комплексна функція метафілу, яка наразі має обмежену підтримку. Растрові операції доступні в форматах WMF і EMF. Формат EMF+ не використовує растрові операції безпосередньо, але може містити деталі EMF, вбудовані профілі WMF або EMF.

Є бінарні та ternary растрові операції:

  • Бінарні растрові операції наносяться на команди ручного малюнка, такі як лінії малювання і вигини. При накладанні лінії колір ручки поєднується з кольором утилізації місця призначення (кольор відповідного пікселя на поверхні пристрою) за допомогою вказаних бітумних логічних операцій з значеннями кольорів шістнадцятого кольору. Приклад зображення нижче ілюструє ефект всіх 16 бінарних растрових операцій, які застосовуються до 20 різних кольорових барів. Нанесені вертикальні кольорові стовпчики, нанесені горизонтальні стовпчики після кожного бінарного растрового операції. Для простих випадків R2_BLACK малює чорний, R2_NOT перетворює колір, R2_NOP не змінює фон, і R2_ Білі муфти білого кольору.
handling-windows-metafiles-aspose-words-net-1
  • Тернарні растрові операції застосовуються при накладанні растрових зображень. Вони поєднують кольори відповідних бітма зображення пікселів, пензлика, і місце призначення бітма, використовуючи бітумні логічні операції з вказаними значеннями кольору шестигран. Однією з найбільш поширених цілей використання денних растрових операцій є емульсія прозорості. Зображення, що надається в прикладі нижче, показує, як можна використовувати прозорість ікони. Існує два типи бітмаксів: b/w маска бітма і кольорова бітмапа. По-перше, маска бітма малюється за допомогою рарижу SRCAND. Змінити область піктограми на чорно-білу, залишаючи прозору область незмінною. Після чого наведено другий бітмапа з рариком SRCINVERT. Відображається колір пікселів на чорному регіоні, залишаючи прозору область незмінною.
handling-windows-metafiles-aspose-words-net-2

Растрові операції не можуть перетворюватися в векторну графіку безпосередньо. 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

Aspose.Words не підтримує ряд функцій метафілу, які є найбільш складними або рідкісними. У цьому випадку Aspose.Words може виконати випадання до іншого типу метафілу гравця

Спочатку, Aspose.Words виконує випадання з векторного метафілу гравця до растрового, який керується rendering_mode майно. Якщо функція випадіння вимкнена, Aspose.Words не підтримується.

Aspose.Words успішно грає метафіл для растрового використання GDI+ на .NET, що робить цей варіант зворотного зв’язку безпечним.

По-друге, існує можливість EMF+ Подвійний метафіл, щоб відтворити EMF+ частину до частини EMF. Управління emf_plus_dual_rendering_modeй Якщо виникають деякі питання, коли грає частина EMF, то можна виконати випадання до растрового марка.

Що стосується растрових операцій, якщо emulate_raster_operations Вимкнено, після чого растерні операції розглядаються як не підтримувані, що спрощує випадання до бітмапа метафілу гравця, якщо вона включена. Таким чином, якщо у вас є метафіл з растровими операціями, але ви не хочете використовувати емульгацію операцій растрових операцій і ще хочете отримати векторний вихід з графікою заміщення, після чого виберіть пункт MetafileRenderingMode.VECTORй