Manipulação De Windows Metarquivos
Windows formato de metarquivo é um formato de arquivo de imagem que pode conter gráficos vetoriais e rasterizados. Este formato é utilizado para armazenar dados Gráficos na memória ou em ficheiros em disco. Um metarquivo armazena uma lista de chamadas de função na interface do dispositivo gráfico Windows (GDI) que devem ser executadas para exibir a imagem na tela. O sistema interpreta e executa esses comandos no contexto de exibição.
Anteriormente, Windows metarquivo era o único formato de imagem vetorial suportado por Microsoft Word. Microsoft Word agora também suporta o formato SVG, mas o formato de metarquivo ainda é comumente usado em documentos do Word. Além disso, o metarquivo pode ser um formato de intercâmbio para algumas outras aplicações, como Microsoft Visio. Essencialmente, o principal objectivo do metarquivo é assegurar o intercâmbio de informações gráficas entre Windows aplicações.
Existem 3 versões do metarquivo Windows:
- WMF - armazena a chamada a 16bit GDI.
- EMF - armazena a chamada para Win32 / GDI.
- EMF + Metafile armazena a chamada para GDI+. EMF+ metarquivo também pode ser dual, descrevendo os mesmos gráficos com EMF e EMF+ partes.
O problema existente com o metarquivo Windows é que ele não é suportado pela maioria dos formatos que não são do Word, nos quais os documentos geralmente são salvos. Portanto, é necessário converter o formato de metarquivo para outros formatos raster ou vetoriais. É fácil converter Windows metarquivo em uma imagem rasterizada em .NET simplesmente passando-o para GDI+, mas não é possível em outras plataformas, pois mesmo GDI+ não fornece a funcionalidade para extrair os gráficos vetoriais do metarquivo. Para resolver esses problemas, Aspose.Words implementa seu próprio Reprodutor de metarquivo Windows, que é capaz de reproduzir o formato de metarquivo tanto vetorial quanto gráfico raster em todas as plataformas.
Controlo do leitor de metarquivo Aspose.Words
A classe MetafileRenderingOptions permite-lhe controlar o leitor de metarquivo. Por exemplo, você pode determinar como as imagens de metarquivo devem ser renderizadas usando a propriedade RenderingMode, que tem um significado especial ao converter em bitmaps (consulte também a propriedade MetafileRenderingOptions).
Apoio Às Operações Raster
Operações Raster é um recurso de metarquivo complexo, que atualmente tem suporte limitado. As operações Raster estão disponíveis nos formatos de metarquivo WMF e EMF. O formato de metarquivo EMF+ não usa operações raster diretamente, mas pode conter partes EMF, metarquivos WMF ou EMF incorporados.
Existem operações raster binárias e ternárias:
- As operações de varredura binária são aplicadas a comandos de desenho com caneta, como linhas e curvas de desenho. Ao desenhar uma linha, a cor da caneta é combinada com a cor do bitmap de destino (a cor do pixel correspondente na superfície do dispositivo) usando operações lógicas bit a bit especificadas com valores de cor hexadecimal. O exemplo de imagem abaixo ilustra o efeito de todas as 16 operações de varredura binária aplicadas a 20 barras de cores diferentes. As barras de cores verticais são desenhadas primeiro, as barras horizontais são desenhadas após cada operação de varredura binária ser aplicada. Para os casos simples, R2_BLACK desenha preto, R2_NOT inverte a cor, R2_NOP não altera o fundo e R2_WHITE desenha branco.
- As operações raster ternárias são aplicadas ao desenhar imagens bitmap. Eles combinam cores de pixels de imagem de bitmap correspondentes, o pincel e o bitmap de destino usando operações lógicas bit a bit com valores de cor hexadecimal especificados. Um dos propósitos mais comuns do uso de operações raster ternárias é a emulação da transparência. A imagem fornecida no exemplo abaixo demonstra como a transparência dos ícones pode ser emulada. Existem dois tipos de bitmaps: o bitmap de máscara b/w e o bitmap de cor. Primeiro, o bitmap da máscara é desenhado com a operação raster SRCAND. Ele altera a região do ícone opaco para preto e branco, deixando a região transparente inalterada. Em seguida, o segundo bitmap é desenhado com a operação raster SRCINVERT. Ele exibe os pixels de cor na região preta, deixando a região transparente inalterada.
As operações de varredura não podem ser convertidas em gráficos vetoriais diretamente. Aspose.Words emula operações rasterizadas, rasterizando parcialmente a superfície do dispositivo afectada por operações rasterizadas. Para este efeito, é utilizada a propriedade EmulateRasterOperations.
O exemplo mostrado abaixo demonstra como Aspose.Words renderiza um metarquivo em um bitmap quando não é possível renderizar corretamente alguns dos registros do metarquivo em gráficos vetoriais: