Zacházení Windows Metafily

Windows Formát Metafile je formát souboru obrázku, který může obsahovat jak vektorovou grafiku, tak rastrovou grafiku. Tento formát slouží k ukládání grafických dat v paměti nebo na diskových souborech. Metafile ukládá seznam volání funkcí v Windows Grafické rozhraní zařízení (GDI), které musí být provedeno pro zobrazení obrázku na obrazovce. Systém interpretuje a provádí tyto příkazy v kontextu zobrazení.

Dříve, Windows Metafile byl jediný formát vektorového obrazu podporovaný Microsoft Word. Microsoft Word nyní také podporuje formát SVG, ale formát metafile je stále běžně používán v dokumentech Word. Metafile může být také výměnným formátem pro některé další aplikace, například Microsoft Visio. V podstatě je hlavním účelem Metafile zajistit výměnu grafických informací mezi Windows žádosti.

Existují 3 verze Windows Metafile:

  • WMF obchody volají na 16bit GDI.
  • EMF obchody volají na Win32/GDI.
  • Obchody EMF+ Metafile volají na GDI+. EMF+ Metafile může být také dvojí, což popisuje stejnou grafiku jak s EMF, tak s EMF+ díly.

Stávající otázka Windows Metafile je, že není podporován většinou neword formátů, do kterých jsou dokumenty obvykle uloženy. Proto je nutné převést formát Metafile na jiné rastrové nebo vektorové formáty. Je snadné konvertovat Windows Metafile na rastrovém obrázku .NET pouhým předáním GDI+, ale není možné na jiných platformách, protože ani GDI+ neposkytuje funkci pro extrahování vektorové grafiky z Metafile. K vyřešení těchto problémů, Aspose.Words provádí vlastní Windows Metafile přehrávač, který je schopen přehrávat Metafile formát jak vektorové i rastrové grafiky na všech platformách.

Řízení Aspose.Words Přehrávač metafilů

The MetafileRenderingOptions třída umožňuje ovládat přehrávač metafile. Můžete například určit, jak by měly být metafilní obrázky vykresleny pomocí RenderingMode vlastnost, která má zvláštní význam při převodu na bitmaps (viz také MetafileRenderingOptions vlastnost).

Podpora rastrových operací

Rastrové operace jsou komplexní metafilní funkce, která má v současné době omezenou podporu. Rastrové operace jsou k dispozici ve formátech WMF a EMF metafile. Formát metasouboru EMF+ nepoužívá přímo rastrové operace, ale může obsahovat EMF části, zabudované WMF nebo EMF metafily.

Existují binární a trinální rastrové operace:

  • Binární rastrové operace jsou aplikovány na příkazy kreslení pera, jako jsou kreslení čar a křivky. Při kreslení čáry je barva pera kombinována s barvou destination bitmap (barva odpovídajícího pixelu na povrchu zařízení) pomocí zadaných bithwise logických operací s hodnotami hex barev. Příklad obrázku níže ilustruje účinek všech 16 binárních rastrových operací používaných na 20 různých barevných tyčí. Svislé barevné tyče se nakreslí jako první, po každém provedení binárního rastru se nakreslí vodorovné tyče. Pro jednoduché případy, R2_BLACK kreslí černou, R2- Ne inverzuje barvu. R2_NOP nemění pozadí a R2_WHITE kreslí bílé.
handling-windows-metafiles-aspose-words-java-1
  • Ternary rastrové operace se uplatňují při kreslení bitmapových snímků. Kombinují barvy odpovídajících bitmap obrazových pixelů, kartáč a destination bitmap pomocí bitwise logických operací s zadanými hodnotami hex barev. Jedním z nejčastějších účelů využití trinálních rastrových operací je emulace transparentnosti. Obrázek uvedený v následujícím příkladu ukazuje, jak lze emulovat transparentnost ikon. Existují dva typy bitmapů: b/w maska bitmapu a barevného bitmapu. Za prvé, maska bitmap je kreslena pomocí SRCAND rastr operace. Změní neprůhlednou oblast ikony na černobílou a průhlednou oblast ponechá beze změny. Pak je druhý bitmap nakreslen pomocí SRCINVERT rastrové operace. Zobrazuje barevné pixely na černé oblasti, přičemž transparentní oblast zůstává beze změny.
handling-windows-metafiles-aspose-words-java-2

Rastrové operace nelze přímo převést na vektorovou grafiku. Aspose.Words emuluje rastrové operace částečným zostřením povrchu zařízení postiženého rastrovými operacemi. Za tímto účelem EmulateRasterOperations majetek se používá.

Níže uvedený příklad ukazuje, jak Aspose.Words provede metasoubor do bitmapu, pokud není možné správně převést některé záznamy metasouborů do vektorové grafiky: