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 |