Crée un contexte de périphérique pour un métafichier au format étendu
#include <WinAPIGdi.au3>
_WinAPI_CreateEnhMetaFile ( [$hDC = 0 [, $tRECT = 0 [, $bPixels = False [, $sFilePath = '' [, $sDescription = '']]]]] )
$hDC | [optionnel] Handle du périphérique de référence pour le métafichier étendu. Le système utilise ce contexte de périphérique pour enregistrer la résolution et les unités du périphérique sur lequel une image est apparue à l'origine. Si ce paramètre est 0 (par défaut), il utilise le périphérique d'affichage en cours pour référence. |
$tRECT | [optionnel] Structure $tagRECT qui spécifie les dimensions de l'image à stocker dans le métafichier étendu. Si ce paramètre est 0 (par défaut), l'interface de périphérique graphique calcule les dimensions du plus petit rectangle qui entoure l'image dessinée par l'application. |
$bPixels | [optionnel] Indique si la structure $tRect est définie en pixels, les valeurs valides sont: True - En unités logiques (pixels). False - En unités de 0,01 millimètres (par défaut). |
$sFilePath |
[optionnel] Le nom du fichier pour le métafichier étendu à créer. Si ce paramètre est '' (par défaut), le métafichier étendu est stocké en mémoire et son contenu est perdu quand il est supprimé en utilisant la fonction _WinAPI_DeleteEnhMetaFile(). |
$sDescription | [optionnel] La chaîne qui spécifie le nom de l'application qui a créé l'image, ainsi que le titre de l'image. Cette chaîne doit être une chaîne vide ou représentée comme suit: "nom de l'application|nom de l'image" |
Succès: | Retourne le handle du contexte de périphérique pour le métafichier étendu. |
Échec: | Retourne 0. |
Les applications utilisent le contexte de périphérique créé par cette fonction pour enregistrer une image graphique dans un métafichier étendu.
La handle d'identification de ce contexte de périphérique peut être transmis à n'importe quelle fonction GDI.
Après qu'une application ait stocké une image dans un métafichier étendu, elle peut afficher l'image sur un périphérique de sortie en appelant la fonction _WinAPI_PlayEnhMetaFile().
Lors de l'affichage de l'image, le système utilise le rectangle pointé par le paramètre $tRect et les données de résolution du périphérique de référence pour positionner et mettre à l'échelle l'image.
Le nom du fichier du métafichier étendu doit utiliser l'extension .emf.
Consultez CreateEnhMetaFile dans la librairie MSDN.
#include <MsgBoxConstants.au3> #include <WinAPIGdi.au3> #include <WinAPIHObj.au3> #include <WinAPIMisc.au3> Global Const $sEmf = @TempDir & '\Test.emf' If FileExists($sEmf) Then If MsgBox(BitOR($MB_YESNOCANCEL, $MB_ICONQUESTION, $MB_DEFBUTTON2, $MB_SYSTEMMODAL), 'Crétion du Métafichier Etendu', $sEmf & ' existe déjà.'& @CRLF & @CRLF & 'Voulez-vous le remplacer?') <> 6 Then Exit EndIf If Not FileDelete($sEmf) Then MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Création Métafichier Etendu', 'Impossible de supprimer le fichier.') Exit EndIf EndIf ; Crée un contexte de périphérique pour un métafichier au format étendu Global $tRECT = _WinAPI_CreateRect(0, 0, 250, 250) Global $hDC = _WinAPI_CreateEnhMetaFile(0, $tRECT, 1, @TempDir & '\Test.emf') ; Dessine les objets Global $hBrush = _WinAPI_SelectObject($hDC, _WinAPI_GetStockObject($DC_BRUSH)) Global $hPen = _WinAPI_SelectObject($hDC, _WinAPI_GetStockObject($NULL_PEN)) _WinAPI_SetDCBrushColor($hDC, 0xAA0000) _WinAPI_Rectangle($hDC, $tRECT) _WinAPI_SetDCBrushColor($hDC, 0xFFFFFF) ; Définit une étoile à 5 branches Global $aPoint[10][2] Calcule($aPoint) Global $hRgn = _WinAPI_CreatePolygonRgn($aPoint) _WinAPI_OffsetRgn($hRgn, 0, 6) _WinAPI_PaintRgn($hDC, $hRgn) ; Supprime les objets _WinAPI_SelectObject($hDC, $hBrush) _WinAPI_SelectObject($hDC, $hPen) Global $hEmf = _WinAPI_CloseEnhMetaFile($hDC) _WinAPI_DeleteEnhMetaFile($hEmf) _WinAPI_DeleteObject($hRgn) ; Affiche le fichier .emf créé dans Microsoft Paint If FileExists($sEmf) Then ShellExecute(@SystemDir & '\mspaint.exe', $sEmf) EndIf func Calcule(ByRef $aPoint) Local $x = 0, $y = 90, $size = 95, $cap = 0 Local Const $pi = 4*atan(1) $aPoint[0][0] = $x $aPoint[0][1] = $y for $i = 1 to 9 $x += $size * Cos($cap) $y += $size * Sin($cap) $aPoint[$i][0] = Round($x) $aPoint[$i][1] = Round($y) $cap += (Mod($i,2) = 0 ? 4*$pi/5 : -2*$pi/5) Next EndFunc ;==>Calcule