GdipRecordMetafileStream()
Syntaxe
|
Resultat.i = GdipRecordMetafileStream(*stream, referenceHdc.i, type.i, @frameRect.RectF, frameUnit.i, description.p-unicode, @*metafile)
Paramètres |
*stream[in] Pointeur sur une instance de l'interface COM IStream qui pointe un stream (flux de données).
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.RectF[in] Rectangle délimitant le métafichier (nombres flottants).
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 dans un stream (flux de données) pour y enregistrer des séquences graphiques et/ou commentaires. Les enregistrements dans le stream se font automatiquement par les fonctions graphiques GDI+, le métafichier étant associé au stream.
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.
GdipRecordMetafileStream diffère de GdipRecordMetafileStreamI par le paramètre frameRect qui est basé sur des nombres flottants pour la première fonction et sur des nombres entiers 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 utilise l'interface Istorage pour créer un objet de stockage structuré à partir duquel un stream est créé.
L'exemple suivant fait :
- Crée un métafichier dans un stream.
- 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
- Ajout d'un premier commentaire ("PureBasic bien sur")
- Création d'une courbe de Bézier en bleu.
- Ajout d'un second commentaire ("Forum fr")
- Création d'une PathGradientBrush avec couleur centrale violet 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)
- Détruit le stream
- Détruit l'objet de stockage
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 et hauteur), le métafichier est tronquée par la droite et en bas.
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