Pixelfläche in "Raster" unterteilen

  • Servus,

    Zusammengefasst:

    Ich möchte(der übliche Anfang) in Adobe Illustrator eine Grafik erstellen. Damit ich dies nicht per Hand erledigen muss, sollte das AutoIt für mich erledigen :)
    Derweilen bin ich soweit, dass ein neues Dokument größe A4 erstellt wird. Um nun mit dem Zeichnen zu beginnen müsste ich den Mittelpunkt des Blattes herrausfinden. Um außerdem das Zeichnen selber zu erleichtern(bzw. das Rechnen zu erleichtern) wäre es gut wenn man ein virtuelles, metrisches "Raster" über die Pixelfläche des Blattes legen könnte.


    Skript um ein neues Dokument zu öffnen:

    [autoit]

    #RequireAdmin
    Opt('MustDeclareVars', 1)

    [/autoit][autoit][/autoit][autoit]

    ShellExecute("Illustrator.exe")
    WinWaitActive("Adobe Illustrator CS5")
    WinActivate("Adobe Illustrator CS5")
    Sleep(3000)
    Send("^n")
    Sleep(2000)
    ControlClick("Neues Dokument", "", "ComboBox2", "left", "1", "933", "348")
    Sleep(100)
    ControlClick("Neues Dokument", "", "ComboBox2", "left", "1", "930", "444")
    Sleep(100)
    ControlClick("Neues Dokument", "", "Button2", "left", "1", "1062", "230")
    Sleep(100)
    Send("{ENTER}")
    Exit

    [/autoit]

    Hier ist das neu geöffnete Dokument
    http://picfront.de/d/8oLx

    Nun müsste man die Pixel des Blattes ermitteln.
    Die Farbe in Hex: 0xffffff [Weiß]
    Das sind diese hier:
    http://picfront.de/d/8oLy
    Dies sollte mit Pixelsearch funktionieren:

    [autoit]

    HotKeySet("!n","_a")
    Func _a()
    $coord = PixelSearch(560,262,1062,732,0x000000)

    [/autoit][autoit][/autoit][autoit]

    If Not @error Then
    MsgBox(0, "X and Y are:", $coord[0] & "," & $coord[1])
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    while 1
    sleep(100)
    WEnd

    [/autoit]

    Um den Rahmen der Pixel(also die äußerste Pixelreihe) zu bekommen müsste man einfach linear,kreuzförmig von Innen nach außen suchen lassen oder?
    Ich weiß leider nicht, wie ich diesen Ansatz realisieren könnte ;(

    Als nächstes das unterteilen des Pixelfeldes in metrische Sektoren.
    Sollte in etwa virtuell so aussehen:
    http://picfront.de/d/8oLE


    Um die Pixel(also die "Koordinatenpunkte" des Bildschirms in ein metrisches System umzuwandeln benötigt man die Formel:
    x(cm) * $dpi / 2,54 = y(pixel)
    y(pixel) * 2,54/$dpi = x(cm)
    Hierfür finde ich die UDF von [James1337] recht nützlich.

    [autoit]

    #cs
    UDF by James1337
    Functions: _MillimetersToPixel, _CentimetersToPixel, _PixelToMillimeters, _PixelToCentimeters
    #ce

    Func _MillimetersToPixel($Millimeters)
    Local $DC = DllCall("user32.dll", "long", "GetDC", "long", 0)
    Local $DeviceCaps = DllCall("gdi32.dll", "long", "GetDeviceCaps", "long", $DC[0], "long", 90)
    Local $DC = DllCall("user32.dll", "long", "ReleaseDC", "long", 0, "long", $DC)
    Local $DPI = $DeviceCaps[0]
    Local $Centimeters = $Millimeters * 10
    Return $Centimeters * $DPI / 2.54
    EndFunc

    Func _CentimetersToPixel($Centimeters)
    Local $DC = DllCall("user32.dll", "long", "GetDC", "long", 0)
    Local $DeviceCaps = DllCall("gdi32.dll", "long", "GetDeviceCaps", "long", $DC[0], "long", 90)
    Local $DC = DllCall("user32.dll", "long", "ReleaseDC", "long", 0, "long", $DC)
    Local $DPI = $DeviceCaps[0]
    Return $Centimeters * $DPI / 2.54
    EndFunc

    Func _PixelToMillimeters($Pixel)
    Local $DC = DllCall("user32.dll", "long", "GetDC", "long", 0)
    Local $DeviceCaps = DllCall("gdi32.dll", "long", "GetDeviceCaps", "long", $DC[0], "long", 90)
    Local $DC = DllCall("user32.dll", "long", "ReleaseDC", "long", 0, "long", $DC)
    Local $DPI = $DeviceCaps[0]
    Return $Pixel / $DPI * 0.254
    EndFunc

    Func _PixelToCentimeters($Pixel)
    Local $DC = DllCall("user32.dll", "long", "GetDC", "long", 0)
    Local $DeviceCaps = DllCall("gdi32.dll", "long", "GetDeviceCaps", "long", $DC[0], "long", 90)
    Local $DC = DllCall("user32.dll", "long", "ReleaseDC", "long", 0, "long", $DC)
    Local $DPI = $DeviceCaps[0]
    Return $Pixel / $DPI * 2.54
    EndFunc

    [/autoit]


    Wenn man nun also die Mitte des Blattes ermittelt hatt, kann man zu zeichnen beginnen.
    Was wird gezeichnet?

    Das hier:
    http://picfront.de/d/8oLI

    Es wird aus einer Inputbox der Wert $s und $h ausgelesen.
    Danach wird, mithilfe dieser Formel: r = (1/2) • { [(s/2)² / h] +h } , der Kreisradius (r) ermittelt.


    In AutoIt schaut das in etwa so aus:

    [autoit]

    include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    $Form1 = GUICreate("Test", 278, 316, 472, 247)
    $Input1 = GUICtrlCreateInput("s", 32, 32, 217, 21)
    $Input2 = GUICtrlCreateInput("h", 32, 64, 217, 21)
    $Button1 = GUICtrlCreateButton("= r", 33, 96, 217, 33)
    $Button2 = GUICtrlCreateButton("Zeichnen", 33, 143, 217, 33)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    ;Damit kein , in AutoIt gelangt!====================================================================================
    HotKeySet("{,}","Komma")
    HotKeySet("{NUMPADDOT}","Komma")
    Func Komma()
    Send(".")
    EndFunc
    ;===================================================================================================================
    _Test()

    [/autoit][autoit][/autoit][autoit]

    Func _Test()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit

    [/autoit][autoit][/autoit][autoit]

    Case $Button1
    $s = GUICtrlRead($Input1)
    $h = GUICtrlRead($Input2)
    $r1 = $s/2
    $r2 =($r1)^2
    $r3 = $r2/$h
    $r4 = $r3 + $h
    $r5 = $r4 * 0.5
    $rT = ConsoleWrite($r5&@CRLF)
    Case $Button2
    _Draw()
    EndSwitch
    WEnd
    EndFunc


    Func _Draw()
    ;Blablabla
    EndFunc ;==>_Exit

    [/autoit]


    Eine Idee hab ich, nur mit dem Umsetzen hauts noch nicht ganz so hin...
    Wäre dankbar wenn mich jemand dabei unterstützen könnte :)


    Danke fürs Lesen und
    Grüßé
    Stoani :rock:

    mfg, Stoani

  • Warum nutzt du dazu nicht die in allen Adobe Produkten integrierte Marcofunktion? Einmal das was du machst mit der Aufzeichnungsfunktion aufnehmen und dann einfach per klick wieder abspielen.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Oder erstelle mit GDI+ eine Metafile
    EMF lassen sich sicher mit AI öffnen

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <WinAPI.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _Create(@ScriptDir & "\Test.emf", 200, 30)

    [/autoit] [autoit][/autoit] [autoit]

    Func _Create($sFileName, $fS, $fH)
    Local Const $PI = ATan(1) * 4
    Local Const $Deg2Rad = $PI / 180
    Local Const $Rad2Deg = 180 / $PI

    [/autoit] [autoit][/autoit] [autoit]

    Local $fTmp = Sqrt($fH ^ 2 + $fS ^ 2 / 4)
    Local $fBeta = 2 * ASin($fS / (2 * $fTmp))
    Local $fAlpha = 2 * ($PI - $fBeta)
    Local $fR = $fS / (2 * Sin($fAlpha / 2))
    Local $fH2 = $fR - $fH

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()
    Local $hDC = _WinAPI_GetDC(_WinAPI_GetDesktopWindow())

    [/autoit] [autoit][/autoit] [autoit]

    Local $tRectF = _GDIPlus_RectFCreate(0, 0, $fR * 2, $fR * 2)
    Local $aResult = DllCall($ghGDIPDll, "uint", "GdipRecordMetafileFileName", "wstr", $sFileName, "hwnd", $hDC, "int", 5, "ptr", DllStructGetPtr($tRectF), "int", 6, "wstr", "KreisSegment", "int*", 0)
    Local $hImage = $aResult[7]
    Local $hContext = _GDIPlus_ImageGetGraphicsContext($hImage)
    DllCall($ghGDIPDll, "uint", "GdipSetPageUnit", "hwnd", $hContext, "int", 6)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Local $tHeader = DllStructCreate("int Type;" & _
    "uint Size;" & _ ; Size of the metafile (in bytes)
    "uint Version;" & _ ; EMF+, EMF, or WMF version
    "uint EmfPlusFlags;" & _
    "float DpiX;" & _
    "float DpiY;" & _
    "int X;" & _ ; Bounds in device units
    "int Y;" & _
    "int Width;" & _
    "int Height;" & _
    "uint Type;" & _ ; Record type EMR_HEADER
    "uint Size;" & _ ; Record size in bytes. This may be greater than the sizeof $tagGDIPMETAHEADER
    "int BoundLeft;" & _ ; Inclusive-inclusive bounds in device units
    "int BoundTop;" & _
    "int BoundRight;" & _
    "int BoundBottom;" & _
    "int FrameLeft;" & _ ; Inclusive-inclusive Picture Frame .01mm unit
    "int FrameTop;" & _
    "int FrameRight;" & _
    "int FrameBottom;" & _
    "uint Signature;" & _ ; Signature. Must be $GDIP_ENHMETA_SIGNATURE
    "uint Version;" & _ ; Version number
    "uint Bytes;" & _ ; Size of the metafile in bytes
    "uint Records;" & _ ; Number of records in the metafile
    "ushort Handles;" & _ ; Number of handles in the handle table. Handle index zero is reserved
    "ushort Reserved;" & _ ; Reserved. Must be zero
    "uint DescriptionChars;" & _ ; Number of chars in the unicode desc string This is 0 if there is no description string
    "uint DescriptionOffset;" & _ ; Offset to the metafile description record. This is 0 if there is no description string
    "uint PalEntries;" & _ ; Number of entries in the metafile palette
    "int cxPixels;" & _ ; Size of the reference device in pixels
    "int cyPixels;" & _
    "int cxMillimeters;" & _; Size of the reference device in millimeters
    "int cyMillimeters;" & _
    "int EmfPlusHeaderSize;" & _ ; size of the EMF+ header in file
    "int LogicalDpiX;" & _ ; Logical Dpi of reference Hdc
    "int LogicalDpiY;") ; usually valid only for EMF+

    [/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "uint", "GdipGetMetafileHeaderFromMetafile", "hwnd", $hImage, "ptr", DllStructGetPtr($tHeader))

    [/autoit] [autoit][/autoit] [autoit]

    Local $fM_DpiX = DllStructGetData($tHeader, "DpiX")
    Local $fM_DpiY = DllStructGetData($tHeader, "DpiY")

    [/autoit] [autoit][/autoit] [autoit]

    $aResult = DllCall($ghGDIPDll, "uint", "GdipGetDpiX", "hwnd", $hContext, "float*", 0)
    Local $fG_DpiX = $aResult[2]
    $aResult = DllCall($ghGDIPDll, "uint", "GdipGetDpiY", "hwnd", $hContext, "float*", 0)
    Local $fG_DpiY = $aResult[2]

    [/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "uint", "GdipScaleWorldTransform", "hwnd", $hContext, "float", $fM_DpiX / $fG_DpiX, "float", $fM_DpiY / $fG_DpiY, "int", 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $hPen_1 = _GDIPlus_PenCreate(0xFFFF0000, 2)
    Local $hPen_2 = _GDIPlus_PenCreate(0xFF00FF00, 2)
    Local $hPen_3 = _GDIPlus_PenCreate(0xFF0000FF, 1)

    [/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "int", "GdipDrawArc", "handle", $hContext, "handle", $hPen_1, "float", 0, "float", 0, _
    "float", $fR * 2, "float", $fR * 2, "float", 270 - ($fAlpha * $Rad2Deg) / 2, "float", $fAlpha * $Rad2Deg)

    [/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "int", "GdipDrawLine", "handle", $hContext, "handle", $hPen_2, "float", $fR - $fS / 2, "float", $fH, _
    "float", $fR + $fS / 2, "float", $fH)

    [/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "int", "GdipDrawArc", "handle", $hContext, "handle", $hPen_3, "float", 0, "float", 0, _
    "float", $fR * 2, "float", $fR * 2, "float", 270 + ($fAlpha * $Rad2Deg) / 2, "float", 360 - ($fAlpha * $Rad2Deg))

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_PenDispose($hPen_1)
    _GDIPlus_PenDispose($hPen_2)
    _GDIPlus_PenDispose($hPen_3)
    _GDIPlus_GraphicsDispose($hContext)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_ImageDispose($hImage)
    _WinAPI_ReleaseDC(_WinAPI_GetDesktopWindow(), $hDC)
    _GDIPlus_Shutdown()
    EndFunc ;==>_Create

    [/autoit]
  • Erstmal:

    Danke fürs Lesen :thumbup:


    chip: Weil ich nicht 100mal das gleiche Zeichnen möchte. Die zwei Werte (s/h) sind variabel. Außerdem ist dies nur ein kleiner Teil eines größeren Tools. Es soll im Endeffekt nicht nur für mich sein sondern auch für den Ottonormalverbraucher.

    eukalyptus

    Danke für die Mühe! :thumbup:
    Leider versteh ich ned alles im Skript (-> DLLCall's), da ich noch nie mit DLLCall oder WinApi gearbeited hab.
    Würde es dir was ausmachen, kleine Komments zu den wichtigsten Vorgängen zu machen?
    Also, was gerade damit gemacht wurde?


    Wäre super! :thumbup:


    Grüße
    Stoani


    Ps.: Danke nochmals :)

    mfg, Stoani

  • Hier bitte:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <WinAPI.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _Create(@ScriptDir & "\Test.emf", 200, 30)

    [/autoit] [autoit][/autoit] [autoit]

    Func _Create($sFileName, $fS, $fH)
    Local Const $PI = ATan(1) * 4 ; Konstante PI = 3.14159265358979
    Local Const $Deg2Rad = $PI / 180 ; zum Umrechnen von Grad zu Bogenmaß
    Local Const $Rad2Deg = 180 / $PI

    [/autoit] [autoit][/autoit] [autoit]

    Local $fTmp = Sqrt($fH ^ 2 + $fS ^ 2 / 4) ;siehe: http://www.arndt-bruenner.de/mathe/scripts/kreissehnen.htm
    Local $fBeta = 2 * ASin($fS / (2 * $fTmp))
    Local $fAlpha = 2 * ($PI - $fBeta) ; Öffnungswinkel des Kreisbogens
    Local $fR = $fS / (2 * Sin($fAlpha / 2)) ; Radius
    Local $fH2 = $fR - $fH ; Mittelpunkt zu Kreissehne

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup() ; Gdiplus DLL laden
    Local $hDC = _WinAPI_GetDC(_WinAPI_GetDesktopWindow()) ;DeviceContext des Bildschirms bekommen

    [/autoit] [autoit][/autoit] [autoit]

    Local $tRectF = _GDIPlus_RectFCreate(0, 0, $fR * 2, $fR * 2) ;Rechteck erzeugen, welches den Kreis umschliesst; deshalb 0 - Radius * 2; das könnten auch A4-Masse sein...

    [/autoit] [autoit][/autoit] [autoit]

    ;Metafile aus DeviceContext erzeugen, Typ = EMF+, Masse des Rechtecks = mm
    Local $aResult = DllCall($ghGDIPDll, "uint", "GdipRecordMetafileFileName", "wstr", $sFileName, "hwnd", $hDC, "int", 5, "ptr", DllStructGetPtr($tRectF), "int", 6, "wstr", "KreisSegment", "int*", 0)
    Local $hImage = $aResult[7]

    [/autoit] [autoit][/autoit] [autoit]

    Local $hContext = _GDIPlus_ImageGetGraphicsContext($hImage) ;GraphicContext vom Metafile bekommen (um darauf zu zeichnen)
    DllCall($ghGDIPDll, "uint", "GdipSetPageUnit", "hwnd", $hContext, "int", 6) ; Einheit auf mm setzen

    [/autoit] [autoit][/autoit] [autoit]

    ;Speicher reservieren, um Headerinformationen auszulesen; wir benötigen später die DPI-Auflösung
    Local $tHeader = DllStructCreate("int Type;" & _
    "uint Size;" & _ ; Size of the metafile (in bytes)
    "uint Version;" & _ ; EMF+, EMF, or WMF version
    "uint EmfPlusFlags;" & _
    "float DpiX;" & _
    "float DpiY;" & _
    "int X;" & _ ; Bounds in device units
    "int Y;" & _
    "int Width;" & _
    "int Height;" & _
    "uint Type;" & _ ; Record type EMR_HEADER
    "uint Size;" & _ ; Record size in bytes. This may be greater than the sizeof $tagGDIPMETAHEADER
    "int BoundLeft;" & _ ; Inclusive-inclusive bounds in device units
    "int BoundTop;" & _
    "int BoundRight;" & _
    "int BoundBottom;" & _
    "int FrameLeft;" & _ ; Inclusive-inclusive Picture Frame .01mm unit
    "int FrameTop;" & _
    "int FrameRight;" & _
    "int FrameBottom;" & _
    "uint Signature;" & _ ; Signature. Must be $GDIP_ENHMETA_SIGNATURE
    "uint Version;" & _ ; Version number
    "uint Bytes;" & _ ; Size of the metafile in bytes
    "uint Records;" & _ ; Number of records in the metafile
    "ushort Handles;" & _ ; Number of handles in the handle table. Handle index zero is reserved
    "ushort Reserved;" & _ ; Reserved. Must be zero
    "uint DescriptionChars;" & _ ; Number of chars in the unicode desc string This is 0 if there is no description string
    "uint DescriptionOffset;" & _ ; Offset to the metafile description record. This is 0 if there is no description string
    "uint PalEntries;" & _ ; Number of entries in the metafile palette
    "int cxPixels;" & _ ; Size of the reference device in pixels
    "int cyPixels;" & _
    "int cxMillimeters;" & _; Size of the reference device in millimeters
    "int cyMillimeters;" & _
    "int EmfPlusHeaderSize;" & _ ; size of the EMF+ header in file
    "int LogicalDpiX;" & _ ; Logical Dpi of reference Hdc
    "int LogicalDpiY;") ; usually valid only for EMF+

    [/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "uint", "GdipGetMetafileHeaderFromMetafile", "hwnd", $hImage, "ptr", DllStructGetPtr($tHeader)); Headerinformationen auslesen

    [/autoit] [autoit][/autoit] [autoit]

    Local $fM_DpiX = DllStructGetData($tHeader, "DpiX") ; Auflösung in DPI horizontal vom Metafile
    Local $fM_DpiY = DllStructGetData($tHeader, "DpiY") ; Auflösung in DPI vertikal vom Metafile

    [/autoit] [autoit][/autoit] [autoit]

    $aResult = DllCall($ghGDIPDll, "uint", "GdipGetDpiX", "hwnd", $hContext, "float*", 0) ; Auflösung in DPI horizontal vom GraphicContext
    Local $fG_DpiX = $aResult[2]
    $aResult = DllCall($ghGDIPDll, "uint", "GdipGetDpiY", "hwnd", $hContext, "float*", 0) ; Auflösung in DPI vertikal vom GraphicContext
    Local $fG_DpiY = $aResult[2]

    [/autoit] [autoit][/autoit] [autoit]

    ;GraphicContext skalieren, damit die Grafik wirklich in mm ist - das sollte eigentlich nicht notwendig sein!?
    ;Jedoch hat das fertige EMF nur so die richtige Größe in IncScape...
    DllCall($ghGDIPDll, "uint", "GdipScaleWorldTransform", "hwnd", $hContext, "float", $fM_DpiX / $fG_DpiX, "float", $fM_DpiY / $fG_DpiY, "int", 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $hPen_1 = _GDIPlus_PenCreate(0xFFFF0000, 2) ; Pinsel Rot Stärke = 2
    Local $hPen_2 = _GDIPlus_PenCreate(0xFF00FF00, 2) ; Pinsel Grün Stärke = 2
    Local $hPen_3 = _GDIPlus_PenCreate(0xFF0000FF, 1) ; Pinsel Blau Stärke = 1

    [/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "int", "GdipDrawArc", "handle", $hContext, "handle", $hPen_1, "float", 0, "float", 0, _
    "float", $fR * 2, "float", $fR * 2, "float", 270 - ($fAlpha * $Rad2Deg) / 2, "float", $fAlpha * $Rad2Deg) ;Kreisbogen des Segments in Rot zeichnen

    [/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "int", "GdipDrawLine", "handle", $hContext, "handle", $hPen_2, "float", $fR - $fS / 2, "float", $fH, _
    "float", $fR + $fS / 2, "float", $fH) ;Kreissehne in Grün zeichnen

    [/autoit] [autoit][/autoit] [autoit]

    DllCall($ghGDIPDll, "int", "GdipDrawArc", "handle", $hContext, "handle", $hPen_3, "float", 0, "float", 0, _
    "float", $fR * 2, "float", $fR * 2, "float", 270 + ($fAlpha * $Rad2Deg) / 2, "float", 360 - ($fAlpha * $Rad2Deg)) ; restlicher Kreisbogen in Blau

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_PenDispose($hPen_1) ; Pinsel im Speicher wieder freigeben
    _GDIPlus_PenDispose($hPen_2)
    _GDIPlus_PenDispose($hPen_3)
    _GDIPlus_GraphicsDispose($hContext) ; Metafile abschliesen und speichern

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_ImageDispose($hImage) ; Metafile aus Speicher löschen
    _WinAPI_ReleaseDC(_WinAPI_GetDesktopWindow(), $hDC) ;DeviceContext freigeben
    _GDIPlus_Shutdown() ;GdiPlus DLL schließen
    EndFunc ;==>_Create

    [/autoit]
  • Danke danke schon viiiiel besser ;D

    Nur diese Werte sind mir noch ned klar (200,30)
    _Create(@ScriptDir & "\Test.emf", 200, 30)

    Das war aber wirklich die letzte ;)

    mfg, Stoani