Compartir a través de


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

Convierte un metarchivo de formato mejorado en un metarchivo de formato de metarchivo de Windows (WMF) y almacena los registros convertidos en un búfer especificado.

Sintaxis

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

Controle el metarchivo de formato mejorado que se va a convertir.

[in] cbData16

Tipo: UINT

Entero sin signo que especifica el número de bytes del búfer al que apunta el parámetro pData16 .

[out] pData16

Tipo: LPBYTE

Puntero a un búfer que recibe los registros convertidos. Si pData16 es NULL, Metafile::EmfToWmfBits devuelve el número de bytes necesarios para almacenar los registros de metarchivo convertidos.

[in, optional] iMapMode

Tipo: INT

Opcional. Especifica el modo de asignación que se va a usar en el metarchivo convertido. Para obtener una lista de los posibles modos de asignación, consulte SetMapMode. El valor predeterminado es MM_ANISOTROPIC.

[in, optional] eFlags

Tipo: EmfToWmfBitsFlags

Opcional. Elemento de la enumeración EmfToWmfBitsFlags que especifica las opciones para la conversión. El valor predeterminado es EmfToWmfBitsFlagsDefault.

Valor devuelto

Tipo: UINT

Si el método se ejecuta correctamente y el puntero del búfer es NULL, el valor devuelto es el número de bytes necesarios para almacenar los registros convertidos. Si el método se ejecuta correctamente y el puntero del búfer es un puntero válido, el valor devuelto es el tamaño de los datos del metarchivo en bytes. Si se produce un error en el método, el valor devuelto es cero.

Comentarios

Al llamar a Metafile::EmfToWmfBits para determinar el tamaño del búfer necesario, debe pasar el mismo valor para eFlags que pase más adelante al llamar a Metafile::EmfToWmfBits para realizar la conversión. De lo contrario, el tamaño devuelto por la primera llamada a Metafile::EmfToWmfBits será incorrecto.

Este método no puede convertir metarchivos de tipo EmfTypeEmfPlusOnly. Si usa este método para convertir un metarchivo de tipo EmfTypeEmfPlusDual, los registros de metarchivo mejorado (EMF) de ese metarchivo se convierten, pero los registros EMF+ no se convierten.

Este método convierte un metarchivo mejorado en un metarchivo WMF para que su imagen se pueda mostrar en una aplicación que reconozca el formato anterior.

El método Metafile::EmfToWmfBits no invalida el identificador de metarchivo mejorado. Llame a la función DeleteEnhMetaFile para liberar el identificador cuando ya no sea necesario.

Para crear un metarchivo WMF escalable, especifique MM_ANISOTROPIC como parámetro iMapMode .

Ejemplos

En el ejemplo siguiente se convierte un metarchivo de formato mejorado en un metarchivo WMF. El último parámetro pasado a Metafile::EmfToWmfBits especifica que el metarchivo de formato mejorado se inserta como comentario en el metarchivo 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 compatible Windows XP, Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado gdiplusheaders.h (include Gdiplus.h)
Library Gdiplus.lib
Archivo DLL Gdiplus.dll

Consulte también

EmfType

GetWinMetaFileBits

Metarchivo de

Metarchivos