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 |