Funktionreferenz


_WinAPI_CreateEnhMetaFile

Beschreibung anzeigen in

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

Parameter

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

Rückgabewert

Erfolg: Das Handle zu einem Gerätekontext für die verbesserte Metadatei.
Fehler: 0.

Bemerkungen

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.

Verwandte Funktionen

_WinAPI_PlayEnhMetaFile

Siehe auch

Suche nach CreateEnhMetaFile in der MSDN Bibliothek.

Beispiel

#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