UDF > WinAPIEx > GDI > MetaFiles >


_WinAPI_CreateEnhMetaFile

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 = '']]]]] )

Param�tres

$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"

Valeur de retour

Succ�s: Retourne le handle du contexte de p�riph�rique pour le m�tafichier �tendu.
�chec: Retourne 0.

Remarques

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.

En relation

_WinAPI_PlayEnhMetaFile

Voir aussi

Consultez CreateEnhMetaFile dans la librairie MSDN.

Exemple

#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