Erzeugt einen Gerätekontext für eine Metadatei mit einem verbesserten Format.
#include <WinAPIGdi.au3>
_WinAPI_CreateEnhMetaFile ( [$hDC = 0 [, $tRECT = 0 [, $bPixels = False [, $sFilePath = '' [, $sDescription = '']]]]] )
$hDC | [optional] Das Handle zum Referenzgerät für die verbesserte Metadatei. Das System nutzt diesen Gerätekontext um die Auflösung und Einheiten des Geräts aufzuzeichnen in welchen das Bild originalerweise erschien.hich a picture originally appeared. Wenn dieser Parameter 0 ist (Standard), so wird das aktuelle Anzeigegerät als Referenz verwendet. |
$tRECT | [optional] Die $tagRECT Struktur welches die Dimensionen des Bildes angibt welches in der verbesserten Metadatei gespeichert werden sollen. Wenn dieser Parameter 0 ist (Standard), so berechnet die Schnittstelle des Grafikgeräts das kleinstmögliche Rechteck welches noch das, von der Anwendung gezeichnete, Bild umschließt. |
$bPixels | [optional] Gibt an, ob die $tRECT Struktur in Pixeln definiert ist. Gültige Werte sind: True - In logischen Einheiten (Pixeln). False - In .01-millimeter Einheiten (Standard). |
$sFilePath | [optional] Der Dateiname der zu erstellenden verbesserten Metadatei. Wenn dieser Parameter '' ist (Standard), so ist die Metadatei speicherbasiert und ihr Inhalt geht verloren wenn sie durch die _WinAPI_DeleteEnhMetaFile() Funktion gelöscht wird. |
$sDescription | [optional] Der String welches den Namen der Anwendung angibt welche das Bild erstellt hat sowie den Titel des Bildes. Dieser String muss entweder leer sein oder diesem Format folgen: "Anwendungsname|Bildname" |
Erfolg: | Das Handle zu einem Gerätekontext für die verbesserte Metadatei. |
Fehler: | 0. |
Anwendungen verwenden den Gerätekontext, welcher von dieser Funktion erstellt wird, um Grafikbilder in der verbesserten Metadatei zu speichern.
Das Handle, welches den Gerätekontext identifiziert, kann jeder GDI-Funktion übergeben werden.
Nachdem eine Anwendung ein Bild in der verbesserten Metadatei speichert, kann es das Bild auf jedem Ausgabegerät mit dem Aufruf der _WinAPI_PlayEnhMetaFile() Funktion anzeigen.
Wenn das Bild angezeigt wird, so verwendet das System das Rechteck, auf welches der $tRECT Parameter zeigt, und die Auflösungsdaten vom Referenzgerät um das Bild zu positionieren und zu skalieren.
Der Dateiname für die verbesserte Metadatei sollte die .emf Endung verwenden.
Suche nach CreateEnhMetaFile in der MSDN Bibliothek.
#include <MsgBoxConstants.au3>
#include <WinAPIGdi.au3>
#include <WinAPIHObj.au3>
#include <WinAPIMisc.au3>
Local Const $sEmf = @TempDir & '\Test.emf'
If FileExists($sEmf) Then
If MsgBox(($MB_YESNOCANCEL + $MB_DEFBUTTON2 + $MB_ICONQUESTION + $MB_SYSTEMMODAL), 'Create Enhanced Metafile', $sEmf & ' is already exists.' & @CRLF & @CRLF & 'Do you want to replace it?') <> 6 Then
Exit
EndIf
If Not FileDelete($sEmf) Then
MsgBox(($MB_ICONERROR + $MB_SYSTEMMODAL), 'Create Enhanced Metafile', 'Unable to delete file.')
Exit
EndIf
EndIf
; Create device context for an enhanced-format metafile
Local $tRECT = _WinAPI_CreateRect(0, 0, 250, 250)
Local $hDC = _WinAPI_CreateEnhMetaFile(0, $tRECT, 1, @TempDir & '\Test.emf')
; Draw objects
Local $hBrush = _WinAPI_SelectObject($hDC, _WinAPI_GetStockObject($DC_BRUSH))
Local $hPen = _WinAPI_SelectObject($hDC, _WinAPI_GetStockObject($NULL_PEN))
_WinAPI_SetDCBrushColor($hDC, 0xAA0000)
_WinAPI_Rectangle($hDC, $tRECT)
_WinAPI_SetDCBrushColor($hDC, 0xFFFFFF)
Local $aPoint[10][2] = [[0, 90], [95, 90], [125, 0], [154, 90], [250, 90], [172, 147], [202, 238], [125, 181], [47, 238], [77, 147]]
Local $hRgn = _WinAPI_CreatePolygonRgn($aPoint)
_WinAPI_OffsetRgn($hRgn, 0, 6)
_WinAPI_PaintRgn($hDC, $hRgn)
; Release objects
_WinAPI_SelectObject($hDC, $hBrush)
_WinAPI_SelectObject($hDC, $hPen)
Local $hEmf = _WinAPI_CloseEnhMetaFile($hDC)
; create a copy
Local $hCopyEmf = _WinAPI_CopyEnhMetaFile($hEmf) ; copy to memory
_WinAPI_DeleteEnhMetaFile($hCopyEmf)
_WinAPI_DeleteEnhMetaFile($hEmf)
_WinAPI_DeleteObject($hRgn)
; Show created .emf file into the Microsoft Paint
If FileExists($sEmf) Then
ShellExecute(@SystemDir & '\mspaint.exe', $sEmf)
EndIf