GdipRecordMetafileI()



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

Paramètres

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 mémoire pour y enregistrer des séquences graphiques et/ou commentaires. L'accès au métafichier se fera par son identifiant GDI+ (paramètre *metafile).

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).
GdipRecordMetafileI diffère de GdipRecordMetafile 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 en mémoire
  - 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 courbe de Bézier en rouge
  - Ajout d'un second commentaire ("Forum fr")
  - Création d'une PathGradientBrush avec couleur centrale brun 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 (largeur), l'ellipse est tronquée par la droite

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