Metafile::EmfToWmfBits, méthode (gdiplusheaders.h)
Convertit un métafichier au format amélioré en un métafichier WMF (Windows Metafile Format) et stocke les enregistrements convertis dans une mémoire tampon spécifiée.
Syntaxe
UINT EmfToWmfBits(
[in] HENHMETAFILE hemf,
[in] UINT cbData16,
[out] LPBYTE pData16,
[in, optional] INT iMapMode,
[in, optional] INT eFlags
);
Paramètres
[in] hemf
Type : HENHMETAFILE
Gérez en métafichier au format amélioré qui doit être converti.
[in] cbData16
Type : UINT
Entier non signé qui spécifie le nombre d’octets dans la mémoire tampon vers laquelle pointe le paramètre pData16 .
[out] pData16
Type : LPBYTE
Pointeur vers une mémoire tampon qui reçoit les enregistrements convertis. Si pData16 a la valeur NULL, Metafile::EmfToWmfBits retourne le nombre d’octets requis pour stocker les enregistrements de métafichier convertis.
[in, optional] iMapMode
Type : INT
Optionnel. Spécifie le mode de mappage à utiliser dans le métafichier converti. Pour obtenir la liste des modes de mappage possibles, consultez SetMapMode. La valeur par défaut est MM_ANISOTROPIC.
[in, optional] eFlags
Type : EmfToWmfBitsFlags
Optionnel. Élément de l’énumération EmfToWmfBitsFlags qui spécifie les options de la conversion. La valeur par défaut est EmfToWmfBitsFlagsDefault.
Valeur retournée
Type : UINT
Si la méthode réussit et que le pointeur de la mémoire tampon est NULL, la valeur de retour correspond au nombre d’octets requis pour stocker les enregistrements convertis. Si la méthode réussit et que le pointeur de mémoire tampon est un pointeur valide, la valeur de retour correspond à la taille des données de métafichier en octets. Si la méthode échoue, la valeur de retour est zéro.
Notes
Lorsque vous appelez Metafile::EmfToWmfBits pour déterminer la taille de la mémoire tampon requise, vous devez passer la même valeur pour eFlags que vous transmettez ultérieurement lorsque vous appelez Metafile::EmfToWmfBits pour effectuer la conversion. Sinon, la taille retournée par le premier appel à Metafile::EmfToWmfBits sera incorrecte.
Cette méthode ne peut pas convertir les métafichiers de type EmfTypeEmfPlusOnly. Si vous utilisez cette méthode pour convertir un métafichier de type EmfTypeEmfPlusDual, les enregistrements EMF (Enhanced Metafile) dans ce métafichier sont convertis, mais les enregistrements EMF+ ne sont pas convertis.
Cette méthode convertit un métafichier amélioré en un métafichier WMF afin que son image puisse être affichée dans une application qui reconnaît l’ancien format.
La méthode Metafile::EmfToWmfBits n’invalide pas le handle de métafichier amélioré. Appelez la fonction DeleteEnhMetaFile pour libérer le handle quand il n’est plus nécessaire.
Pour créer un métafichier WMF scalable, spécifiez MM_ANISOTROPIC comme paramètre iMapMode .
Exemples
L’exemple suivant convertit un métafichier au format amélioré en métafichier WMF. Le dernier paramètre passé à Metafile::EmfToWmfBits spécifie que le métafichier au format amélioré est incorporé en tant que commentaire dans le métafichier converti.
// 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;
Configuration requise
Client minimal pris en charge | Windows XP, Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | gdiplusheaders.h (inclure Gdiplus.h) |
Bibliothèque | Gdiplus.lib |
DLL | Gdiplus.dll |