Opérations de métafichier améliorées
Vous pouvez utiliser le handle dans un métafichier amélioré pour accomplir les tâches suivantes :
- Affichez l’image stockée dans un métafichier amélioré.
- Créez des copies d’un métafichier amélioré.
- Modifiez un métafichier amélioré.
- Récupérez la description facultative stockée dans un métafichier amélioré.
- Récupérez une copie d’un en-tête enhanced-metafile.
- Récupérez une version binaire d’un métafichier amélioré.
- Énumérez les couleurs dans la palette facultative.
Ces tâches sont abordées dans les sections du reste de cette rubrique.
Afficher l’image stockée dans un métafichier amélioré
Vous pouvez afficher l’image stockée dans un métafichier amélioré à l’aide de la fonction PlayEnhMetaFile . Passez la fonction un handle au métafichier amélioré, sans se soucier du format des enregistrements de métafichiers améliorés. Toutefois, il est parfois souhaitable d’énumérer les enregistrements dans le métafichier amélioré pour rechercher une fonction GDI particulière et modifier les paramètres de la fonction d’une manière ou d’une autre. Pour ce faire, vous pouvez utiliser EnumEnhMetaFile et fournir une fonction de rappel, EnhMetaFileProc, pour traiter les enregistrements de métafichiers améliorés. Pour modifier les paramètres d’un enregistrement de métafichier amélioré, vous devez connaître le format des paramètres dans l’enregistrement.
Créer des copies d’un métafichier amélioré
Certaines applications créent des copies de sauvegarde temporaire (ou dupliquées) d’un fichier avant de permettre à l’utilisateur de modifier l’original. Une application peut créer une copie de sauvegarde d’un métafichier amélioré en appelant la fonction CopyEnhMetaFile , en fournissant un handle qui identifie le métafichier amélioré et en fournissant un pointeur vers le nom du nouveau fichier.
Pour créer un métafichier au format amélioré basé sur la mémoire, appelez la fonction SetEnhMetaFileBits .
Modifier un métafichier amélioré
La plupart des applications de dessin, d’illustration et de conception assistée par ordinateur (CAO) nécessitent un moyen de modifier une image stockée dans un métafichier amélioré. Bien que la modification d’un métafichier amélioré soit une tâche complexe, vous pouvez utiliser la fonction EnumEnhMetaFile en combinaison avec d’autres fonctions pour fournir cette fonctionnalité dans votre application. La fonction EnumEnhMetaFile et sa fonction de rappel associée, EnhMetaFileProc, permettent à l’application de traiter des enregistrements individuels dans un métafichier amélioré.
Récupérer la description facultative stockée dans un métafichier amélioré
Certaines applications affichent la description textuelle d’un métafichier amélioré avec le nom de fichier correspondant dans la boîte de dialogue Ouvrir . Vous pouvez déterminer si cette chaîne existe dans un métafichier amélioré en récupérant l’en-tête de métafichier avec la fonction GetEnhMetaFileHeader et en examinant l’un de ses membres. Si la chaîne existe, l’application la récupère en appelant la fonction GetEnhMetaFileDescription .
Récupérer une version binaire d’un métafichier amélioré
Vous pouvez récupérer le contenu d’un métafichier en appelant la fonction GetEnhMetaFileBits ; toutefois, avant de récupérer le contenu, vous devez spécifier la taille du fichier. Pour obtenir la taille, vous pouvez utiliser la fonction GetEnhMetaFileHeader et examiner le membre approprié.
Énumérer les couleurs dans la palette facultative
Pour obtenir des couleurs cohérentes lorsqu’une image est affichée sur différents appareils de sortie, vous pouvez appeler la fonction CreatePalette et stocker une palette logique dans un métafichier amélioré. Une application qui affiche l’image stockée dans le métafichier amélioré récupère cette palette et appelle la fonction RealizePalette avant d’afficher l’image. Pour déterminer si une palette est stockée dans un métafichier amélioré, récupérez l’en-tête du métafichier et examinez le membre approprié. S’il existe une palette, vous pouvez appeler la fonction GetEnhMetaFilePaletteEntries pour récupérer la palette logique.