Compartilhar via


Método Metafile::EmfToWmfBits (gdiplusheaders.h)

Converte um metarquivo de formato aprimorado em um metarquivo WMF (Formato de Metarquivo do Windows) e armazena os registros convertidos em um buffer especificado.

Sintaxe

UINT EmfToWmfBits(
  [in]           HENHMETAFILE hemf,
  [in]           UINT         cbData16,
  [out]          LPBYTE       pData16,
  [in, optional] INT          iMapMode,
  [in, optional] INT          eFlags
);

Parâmetros

[in] hemf

Tipo: HENHMETAFILE

Manipule para o metarquivo de formato aprimorado que deve ser convertido.

[in] cbData16

Tipo: UINT

Inteiro sem sinal que especifica o número de bytes no buffer apontado pelo parâmetro pData16 .

[out] pData16

Tipo: LPBYTE

Ponteiro para um buffer que recebe os registros convertidos. Se pData16 for NULL, Metafile::EmfToWmfBits retornará o número de bytes necessários para armazenar os registros de meta-arquivo convertidos.

[in, optional] iMapMode

Tipo: INT

Opcional. Especifica o modo de mapeamento a ser usado no metarquivo convertido. Para obter uma lista de possíveis modos de mapeamento, consulte SetMapMode. O valor padrão é MM_ANISOTROPIC.

[in, optional] eFlags

Tipo: EmfToWmfBitsFlags

Opcional. Elemento da enumeração EmfToWmfBitsFlags que especifica opções para a conversão. O valor padrão é EmfToWmfBitsFlagsDefault.

Valor retornado

Tipo: UINT

Se o método for bem-sucedido e o ponteiro do buffer for NULL, o valor retornado será o número de bytes necessários para armazenar os registros convertidos. Se o método for bem-sucedido e o ponteiro do buffer for um ponteiro válido, o valor retornado será o tamanho dos dados de meta-arquivo em bytes. Se o método falhar, o valor retornado será zero.

Comentários

Ao chamar Metafile::EmfToWmfBits para determinar o tamanho do buffer necessário, você deve passar o mesmo valor para eFlags que você passa posteriormente ao chamar Metafile::EmfToWmfBits para executar a conversão. Caso contrário, o tamanho retornado pela primeira chamada para Metafile::EmfToWmfBits estará incorreto.

Esse método não pode converter meta-arquivos do tipo EmfTypeEmfPlusOnly. Se você usar esse método para converter um metarquivo do tipo EmfTypeEmfPlusDual, os registros EMF (Enhanced Metafile) nesse metarquivo serão convertidos, mas os registros EMF+ não serão convertidos.

Esse método converte um metarquivo aprimorado em um meta-arquivo WMF para que sua imagem possa ser exibida em um aplicativo que reconhece o formato mais antigo.

O método Metafile::EmfToWmfBits não invalida o identificador de meta-arquivo aprimorado. Chame a função DeleteEnhMetaFile para liberar o identificador quando ele não for mais necessário.

Para criar um meta-arquivo WMF escalonável, especifique MM_ANISOTROPIC como o parâmetro iMapMode .

Exemplos

O exemplo a seguir converte um metarquivo de formato aprimorado em um metarquivo WMF. O último parâmetro passado para Metafile::EmfToWmfBits especifica que o meta-arquivo de formato aprimorado é inserido como um comentário no meta-arquivo convertido.

// Construct a Metafile object from an existing EMF disk file.
Metafile myMetafile(L"SourceMetafile.emf");

// Get a handle to the EMF metafile.
HENHMETAFILE hEmf = myMetafile.GetHENHMETAFILE();

// Determine the size of the buffer that will receive the converted records.
UINT size = Metafile::EmfToWmfBits(
   hEmf, 
   0, 
   NULL,
   MM_ANISOTROPIC,
   EmfToWmfBitsFlagsEmbedEmf);

// Allocate a buffer to receive the converted records.
BYTE* buffer = new BYTE[size];

// Convert the EMF records to WMF records.
INT convertedSize = Metafile::EmfToWmfBits(
   hEmf, 
   size,
   buffer, 
   MM_ANISOTROPIC,
   EmfToWmfBitsFlagsEmbedEmf);

// Get a handle to the converted metafile.
HMETAFILE hmf = SetMetaFileBitsEx(size, buffer);

// Write the WMF metafile to a disk file.
CopyMetaFile(hmf, TEXT("ConvertedMetafile.wmf"));

DeleteMetaFile(hmf);
DeleteEnhMetaFile(hEmf);
delete[] buffer;

Requisitos

   
Cliente mínimo com suporte Windows XP, Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho gdiplusheaders.h (inclua Gdiplus.h)
Biblioteca Gdiplus.lib
DLL Gdiplus.dll

Confira também

Emftype

GetWinMetaFileBits

Metarquivo

Metarquivos