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