Condividi tramite


Metodo Metafile::EmfToWmfBits (gdiplusheaders.h)

Converte un metafile in formato avanzato in un metafile di Windows (WMF) e archivia i record convertiti in un buffer specificato.

Sintassi

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

Parametri

[in] hemf

Tipo: HENHMETAFILE

Gestire il metafile con formato avanzato da convertire.

[in] cbData16

Tipo: UINT

Intero senza segno che specifica il numero di byte nel buffer a cui punta il parametro pData16 .

[out] pData16

Tipo: LPBYTE

Puntatore a un buffer che riceve i record convertiti. Se pData16 è NULL, Metafile::EmfToWmfBits restituisce il numero di byte necessari per archiviare i record metafile convertiti.

[in, optional] iMapMode

Tipo: INT

Facoltativa. Specifica la modalità di mapping da usare nel metafile convertito. Per un elenco delle modalità di mapping possibili, vedere SetMapMode. Il valore predefinito è MM_ANISOTROPIC.

[in, optional] eFlags

Tipo: EmfToWmfBitsFlags

Facoltativa. Elemento dell'enumerazione EmfToWmfBitsFlags che specifica le opzioni per la conversione. Il valore predefinito è EmfToWmfBitsFlagsDefault.

Valore restituito

Tipo: UINT

Se il metodo ha esito positivo e il puntatore del buffer è NULL, il valore restituito è il numero di byte necessari per archiviare i record convertiti. Se il metodo ha esito positivo e il puntatore del buffer è un puntatore valido, il valore restituito è la dimensione dei dati metafile in byte. Se il metodo ha esito negativo, il valore restituito è zero.

Commenti

Quando si chiama Metafile::EmfToWmfBits per determinare le dimensioni del buffer richiesto, è necessario passare lo stesso valore per eFlags che si passa più avanti quando si chiama Metafile::EmfToWmfBits per eseguire la conversione. In caso contrario, le dimensioni restituite dalla prima chiamata a Metafile::EmfToWmfBits non saranno corrette.

Questo metodo non può convertire metafile di tipo EmfTypeEmfPlusOnly. Se si usa questo metodo per convertire un metafile di tipo EmfTypeEmfPlusDual, i record EMF (Enhanced Metafile) in tale metafile vengono convertiti, ma i record EMF+ non vengono convertiti.

Questo metodo converte un metafile avanzato in un metafile WMF in modo che l'immagine possa essere visualizzata in un'applicazione che riconosce il formato precedente.

Il metodo Metafile::EmfToWmfBits non invalida l'handle metafile avanzato. Chiamare la funzione DeleteEnhMetaFile per rilasciare l'handle quando non è più necessario.

Per creare un metafile WMF scalabile, specificare MM_ANISOTROPIC come parametro iMapMode .

Esempio

Nell'esempio seguente viene convertito un metafile di formato avanzato in un metafile WMF. L'ultimo parametro passato a Metafile::EmfToWmfBits specifica che il metafile in formato avanzato viene incorporato come commento nel metafile convertito.

// 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;

Requisiti

   
Client minimo supportato Windows XP, Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione gdiplusheaders.h (include Gdiplus.h)
Libreria Gdiplus.lib
DLL Gdiplus.dll

Vedi anche

Emftype

GetWinMetaFileBits

Metafile

Metafile