GdipRecordMetafileFileName()



Syntaxe
Resultat.i = GdipRecordMetafileFileNameI(filename.p-unicode, referenceHdc.i, type.i, @frameRect.Rect, frameUnit.i, description.p-unicode, @*metafile)

Paramètres

filename.p-unicode

[in] Chaîne Unicode qui indique le nom du fichier à créer (métafichier graphique) ou seront enregistrés toutes les séquences graphiques et/ou commentaires.

referenceHdc.i

[in] Handle du device context (contexte de périphérique) associé au graphique.

type.i

in] Elément de l'énumération EmfType qui spécifie le type de métafichier qui sera enregistré.

frameRect.Rect

[in] Rectangle délimitant le métafichier (nombres entiers).

frameUnit.i

[in] Element de l'énumération MetafileFrameUnit qui spécifie l'unité de mesure du rectangle défini par le paramètre frameRect.

description.p-unicode

[in] Chaîne unicode qui contient un nom descriptif pour le nouveau Metafile. Cette chaîne peut être vide.

*metafile

[out] *metafile recevra un pointeur sur l'objet metafile créé.

Description

Cette fonction est classé par Micosoft dans les fonctions Graphics mais je l'ai classée dans les métafiles.

Cette fonction permet de créer un métafichier en tant que fichier sur le disque pour y enregistrer des séquences graphiques et/ou commentaires.

referenceHdc est leHandle du device context (contexte de périphérique) associé au graphique. Les commandes Purebasic telles que StartDrawing(ImageOutput(#Image)), StartDrawing(WindowOutput()(#IWindow)) retournent un hdc en cas de réussite qui est utilisable avec la fonction. Les API windows CreateDC, GetDC, GetDCEx ou GetWindowDC sont utilisables pour obtenir un hdc.
type défini le type de métafichier enregistré et est un élément de l'énumération EmfType.
frameRect délimite le métafichier. Ce paramètre est associé au paramètre frameUnit qui spécifie l'unité de mesure du rectangle (énumération MetafileFrameUnit).
Une chaîne descriptive peut également être ajoutée ( paramètre description.p-unicode).
Lorsque l'on enregistre les éléments graphiques dans un métafichier, il doit être en écriture et Microsoft Windows GDI+ doit pouvoir obtenir un verrouillage exclusif sur le fichier.
GdipRecordMetafileFileNameI diffère de GdipRecordMetafileFileName par le paramètre frameRect qui est basé sur des nombres entiers pour la première fonction et sur des nombres flottants pour la seconde.
A chaque création d'un objet metafile doit correspondre un appel de la fonction GdipDisposeImage() qui permet de libérer les ressources associées à l'objet.
L'exemple suivant fait :
  - Crée un métafichier (GdipRecordMetafileFileName_2.emf)
  - Lui associe un graphique propre et temporaire pour ajouter des éléments au métafichier (ce n'est pas un graphique d'affichage)
  - Création d'une brush, on ajoute une première ellipse remplie en verdâtre
  - Ajout d'un premier commentaire ("PureBasic bien sur")
  - Création d'une PathGradientBrush avec couleur centrale rouge et correction Sigma
  - Ajout d'un polygone hexagonale rempli avec la brush
  - Ajout d'un second commentaire ("Forum fr")
  - Création d'une PathGradientBrush avec couleur centrale bleue et correction Sigma
  - Ajout d'un camembert rempli avec la brush
  - Stoppe l'enregistrement du métafichier en fermant le graphique associé
  - Création du graphique d'affichage associé au DC de la fenêtre principale
  - Affiche le métafichier (les commentaires ne sont pas affichés)
  - Ferme le graphique d'affichage
  - Ferme le métafichier (image)
Une procédure de rafraîchissement est utilisée car le système ne redessine pas les éléments de GDI+
Le paramètre frameRect est plus petit que les dimensions de la fenêtre (hauteur), le camembert se trouve partiellement dessiné

Résultat de la fonction

Si la fonction réussit, elle retourne #Ok qui est une constante de l'énumération status.
Si la fonction échoue, elle retourne une des autres valeurs de l'énumération status.

PB - OS

PureBasic v4.30 bêta 4 (Windows - x86)
Testé avec Windows Vista édition familiale Premium