Einem Pixel eine Farbe zuordnen

  • Hallo :)

    Ich wollte mal fragen, ob es eine Funktion in AutoIt gibt, mit der man einem Pixel eine Farbe geben kann?
    Und wenn nicht, kann man sich vielleicht eine Funktion machen, die so etwas dann machen würde?
    Also etwa so: PixelGetColor (x,y,$Farbe) oder so? :D

    Bzw. könntet ihr mir so ne Funktion machen? XD - ich bin zu blöd dafür :D
    ___________________________________________________

    Habe seit 7 Monaten etwa mich nicht mehr wirklich mit AutoIt beschäftigt und ich war noch nie besonders gut, also bitte ausführliche Erklärungen dazu schreiben :D
    Danke im voraus :)
    MfG, Robb

    Lächel, du kannst sie nicht alle töten.

    Einmal editiert, zuletzt von masterRobb (25. Dezember 2010 um 15:57)

  • Zitat

    Bzw. könntet ihr mir so ne Funktion machen? XD - ich bin zu blöd dafür


    Da hab ich jetzt 3mal überlegt ob ich überhaupt was poste.
    Ausserdem sind wir durchaus in der Lage deine Problemmstellung zu erkennen, ohne das du sie gleich überdimensional gross schreibst und farbig hervorhebst.

    Spoiler anzeigen
    [autoit]


    Func _PixelSetColor($iX,$iY,$iColor,$hWnd=0)
    ;Ascend4nt
    Local $aRet,$iErr,$hDC
    If $hWnd And Not IsHWnd($hWnd) Then Return SetError(1,@error,False)

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

    $hDC=_WinAPI_GetWindowDC($hWnd) ; 0 = DC of entire (primary) screen (desktop)
    If Not $hDC Then Return SetError(2,@error,False)

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

    ; Do the RGB->BGR conversion ('+' could have been used in place of BitOR)
    $iColor=BitOR(BitShift(BitAND($iColor,0xFF0000),16),BitShift(BitAND($iColor,0xFF),-16),BitAND($iColor,0xFF00))

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

    $aRet=DllCall ("gdi32.dll","dword","SetPixel","handle",$hDC,"int",$iX,"int",$iY,"dword",$iColor)
    If @error Then $iErr=@error

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

    _WinAPI_ReleaseDC($hWnd,$hDC)

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

    If $iErr Then Return SetError(2,$iErr,False)

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

    $iColor=$aRet[0]
    ; Do the BGR->RGB conversion ('+' could have been used in place of BitOR)
    $iColor=BitOR(BitShift(BitAND($iColor,0xFF0000),16),BitShift(BitAND($iColor,0xFF),-16),BitAND($iColor,0xFF00))

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

    Return SetError(0,$iColor,True)
    EndFunc

    [/autoit]
  • Ich dachte, das wäre ein Forum in dem jeder programmtechnische Hilfe bekommen würde...
    Tja, scheint mir wohl so, als ob ich mich hier geirrt hätte und dies lediglich für irgendwelche Stunden oder Profis zur Verfügung gestellt wurde?
    Ich versuche aus anderen Programmen was zu lernen... ich bin noch totaler Anfänger und habe mir mit gar keinen Grundkenntnissen alles selbst beibringen müssen, zu dem bin ich nun mal nicht super intelligent.

    Ich habe es farbig hervorgehoben, damit ihr euch nicht den restlichen Text durchlesen müsst... Es würde eig. auch reichen nur das farbige zu lesen um sofort die Fragestellung zu erkennen.

    Dass Programmierer immer so mies gelaunt sein müssen -.-
    _______________________________________________________

    Könnte mir jemand vielleicht noch zum ScriptCode von i2c eine Erklärung dazu schreiben, wäre sehr dankbar :)

    Lächel, du kannst sie nicht alle töten.

  • Hi,
    1. i2c hat dir eine Funktion gegeben.
    2. Das hier ist das beste AutoIt Forum das es gibt und hier bekommt jeder der eine vernünftige Frage stellen kann (und die Forumsregeln beachtet hat) eine Antwort.
    3. Ich hab hier mal ein kleines Beispiel für dich

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    $hGUI = GUICreate("Test", 500, 500) ;Erstellt ein Fenster 500x500px groß
    GUISetState();Zeigt das fenster an

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

    _PixelSetColor(10, 100, 0xFF0000, $hGUI) ;Macht einen Pixel rot (0xFF00000 = Rot)
    _PixelSetColor(11, 100, 0xFF0000, $hGUI)
    _PixelSetColor(12, 100, 0xFF0000, $hGUI)
    _PixelSetColor(13, 100, 0xFF0000, $hGUI)

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

    While GUIGetMsg() <> -3 ;Wartet nur bis einer auf das X oben geht
    WEnd

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

    Func _PixelSetColor($iX, $iY, $iColor, $hWnd = 0)
    ;Ascend4nt
    Local $aRet, $iErr, $hDC
    If $hWnd And Not IsHWnd($hWnd) Then Return SetError(1, @error, False)

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

    $hDC = _WinAPI_GetWindowDC($hWnd) ; 0 = DC of entire (primary) screen (desktop)
    If Not $hDC Then Return SetError(2, @error, False)

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

    ; Do the RGB->BGR conversion ('+' could have been used in place of BitOR)
    $iColor = BitOR(BitShift(BitAND($iColor, 0xFF0000), 16), BitShift(BitAND($iColor, 0xFF), -16), BitAND($iColor, 0xFF00))

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

    $aRet = DllCall("gdi32.dll", "dword", "SetPixel", "handle", $hDC, "int", $iX, "int", $iY, "dword", $iColor)
    If @error Then $iErr = @error

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

    _WinAPI_ReleaseDC($hWnd, $hDC)

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

    If $iErr Then Return SetError(2, $iErr, False)

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

    $iColor = $aRet[0]
    ; Do the BGR->RGB conversion ('+' could have been used in place of BitOR)
    $iColor = BitOR(BitShift(BitAND($iColor, 0xFF0000), 16), BitShift(BitAND($iColor, 0xFF), -16), BitAND($iColor, 0xFF00))

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

    Return SetError(0, $iColor, True)
    EndFunc ;==>_PixelSetColor

    [/autoit]
    • Offizieller Beitrag

    Wie bist du denn drauf?

    I2c hat dir ein Script geschrieben, du maulst hier rum und willst dann das dir jemand den Code erklärt.

    Zieh mal so eine Show im Englischen Forum ab, dann bekommst du gleich einen 1 Wochen Ban.

  • Bin der selben meinung

    hier wurden meiner meinung nach sehr gute beispiele gegeben. zu behaupten das hier niemanden geholfen wird ist wohl alles andere als gerechtfertigt.
    habe hier auch als anfänger angefangen und mich nur durch dieses forum und selbstverständlich mit vielen vielen eigenversuchen verbessert.

    danke nochmal für all euren hilfen ;)

    gruß Inferior

  • Er hat mir ein Script gegeben.
    Davor hat ER mich angemault... "3 mal überlegt bla bla"
    Also nur, weil ich hier eine Frage stelle und ein Scrip gerne hätte, weil ich das nicht verstehen würde, soll man mir nicht helfen?
    Das ist extrem beleidigend und egoistisch.
    In einem Englischen Forum hätte er Anschiss bekommen und nicht ich...
    Die Mentalität der englischsprachigen Länder ist nämlich weitaus humaner gerichtet, im Gegensatz zu der der Deutschen.
    Zu dem ist das so ziemlich das EINZIGE AutoIt Forum! Dass es somit das Beste ist, ist die Folge daraus.

    Dazu habe ich ja die Forumsregeln beachtet, oder habe ich etwa was falsch gemacht?
    Dass er mir eine Funktion gegeben hat ist nicht schlecht und deswegen habe ich ihn auch NICHT angemault!
    Lediglich, weil er mich doof angemault hat => "Da hab ich jetzt 3mal überlegt ob ich überhaupt was poste.
    Ausserdem sind wir durchaus in der Lage deine Problemmstellung zu erkennen, ohne das du sie gleich überdimensional gross schreibst und farbig hervorhebst. "

    Und DAS ist SEHR dreist.
    ______________
    Danke für die Erklärung :)

    Und um auf s Programm zurück zu kommen:
    Funktioniert dieses Programm nur auf ner Gui? Oder ist es auch möglich einfach nur auf der Oberfläche einen beispielsweise roten Punkt zu machen? :)

    Lächel, du kannst sie nicht alle töten.

    Einmal editiert, zuletzt von masterRobb (25. Dezember 2010 um 16:22)

  • Hi,
    um auf dem Desktop zu zeichnen musst du einfach keinen Handle angeben d.h. einfach $hGUI weglassen.

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>

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

    _PixelSetColor(10, 100, 0xFF0000 ) ;Macht einen Pixel rot (0xFF00000 = Rot)
    _PixelSetColor(11, 100, 0xFF0000 )
    _PixelSetColor(12, 100, 0xFF0000 )
    _PixelSetColor(13, 100, 0xFF0000)

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

    Func _PixelSetColor($iX, $iY, $iColor, $hWnd = 0)
    ;Ascend4nt
    Local $aRet, $iErr, $hDC
    If $hWnd And Not IsHWnd($hWnd) Then Return SetError(1, @error, False)

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

    $hDC = _WinAPI_GetWindowDC($hWnd) ; 0 = DC of entire (primary) screen (desktop)
    If Not $hDC Then Return SetError(2, @error, False)

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

    ; Do the RGB->BGR conversion ('+' could have been used in place of BitOR)
    $iColor = BitOR(BitShift(BitAND($iColor, 0xFF0000), 16), BitShift(BitAND($iColor, 0xFF), -16), BitAND($iColor, 0xFF00))

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

    $aRet = DllCall("gdi32.dll", "dword", "SetPixel", "handle", $hDC, "int", $iX, "int", $iY, "dword", $iColor)
    If @error Then $iErr = @error

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

    _WinAPI_ReleaseDC($hWnd, $hDC)

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

    If $iErr Then Return SetError(2, $iErr, False)

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

    $iColor = $aRet[0]
    ; Do the BGR->RGB conversion ('+' could have been used in place of BitOR)
    $iColor = BitOR(BitShift(BitAND($iColor, 0xFF0000), 16), BitShift(BitAND($iColor, 0xFF), -16), BitAND($iColor, 0xFF00))

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

    Return SetError(0, $iColor, True)
    EndFunc ;==>_PixelSetColor

    [/autoit]
  • Zitat

    Funktioniert dieses Programm nur auf ner Gui? Oder ist es auch möglich einfach nur auf der Oberfläche einen beispielsweise roten Punkt zu machen? :)


    Du kannst auch einen roten Stift nehmen und damit einen Punkt auf den Bildschrim malen :D... WO möchtest du denn einen farbigen Punkt hinmalen? Du kannst ihn auf eine GUI malen, auf den Desktophintergrund, in eine Datei etc. ;)

    Zitat

    Dazu habe ich ja die Forumsregeln beachtet, oder habe ich etwa was falsch gemacht?


    Das war doch nur eine Aufzählung von Verhaltensweisen die in diesem Forum keine Unterstützung einbringen würden. :rolleyes:

  • While GUIGetMsg() <> -3 ;Wartet nur bis einer auf das X oben geht
    WEnd
    Den Teil verstehe ich noch nicht ganz :D
    Aber das Programm klappt schon klasse! :D
    THX! Für jegliche Unterstützung! :)

    name22
    HAHAHA XD
    Gute Idee :P
    Einfach in den Vordergrund ... so als würde es aussehen, als ob ich mit m Stift auf den Bildschirm gemalt hätte ;D

    Lächel, du kannst sie nicht alle töten.

  • Zitat

    While GUIGetMsg() <> -3 ;Wartet nur bis einer auf das X oben geht
    WEnd
    Den Teil verstehe ich noch nicht ganz :D


    Du solltest dir vielleicht mal ein Tutorial zum Thema GUI Message Loop durchlesen... GUIGetMsg() gibt die ID eines GUI Events bzw. die ControlID eines angeklickten Controls zurück. -3 wird zurückgegeben wenn du auf den X Button des Fensters klickst ;).

  • Heute scheint irgendwie der Wurm drin zu sein. :rolleyes:

    Kann es sein das du grad etwas zuviel in diesen kleinen Satz hineininterpretierst? Ich war nicht derjenige, der dich mit "blöd" betitelt hat. Würde ich das von dir denken dann hätte ich keinerlei Bedenken das auch auszusprechen.

    "könntet ihr mir so ne Funktion machen? XD" ließ mich zögern. Zusammen mit "ich bin zu blöd dafür" und der Tatsache, das du nichtmal ein Skript postest, das einen deiner Versuche zeigt, bin ich überhaupt nicht davon überzeugt das du es nur ansatzweise versucht hast. Das "Macht mal jemand" Forum ist hier.

    Und abschliessend sei noch gesagt, das ich nicht mies gelaunt bin und das auch kein allgemeingültiges Merkmal eines Programmierers ist. Wir haben durchaus Humor und einige sogar einen Keller in den sie zum Lachen gehen können.

  • Nun gut, dann hoffen wir einfach mal, dass ich zu viel in diesen Satz interpretiert habe :D
    Wenn dies so ist, dann möchte ich mich bei dir entschuldigen, man hätte dennoch noch ein "Happy-Smiley" dahinter setzen können oder es ganz auslassen können.
    :)
    Nun, genau genommen habe ich auch keinen Versuch gestartet so ein Programm zu schreiben. Ich hätte nicht mal die erste Zeile hinbekommen.
    Ich hätte lediglich gerne so eine Funktion gehabt um mich mit dieser dann etwas weiterzubilden ... spielerisch :)
    Und evtl. so Bilder oder ähnliches erstellt ;)


    Wie kriege ich es eig. hin, dass das immer im Vordergrund ist? :)
    Muss es immer neu "gezeichnet" werden? ^^

    name22
    So ein Tutorial brauche ich mir gar nicht erst durchlesen XD
    Da verstehe ich eh kein Wort... die Erklärungen sind manchmal echt katastrophal ;) Selbst mein Vater (Informatiker) versteht aus der Erklärung selbst meist nichts :D
    Ich müsste irgendeine Programmiersprache kennen um mir wenigstens ein paar Begriffe ableiten zu können oder um grob verstehen zu können wie das Programm überhaupt dann arbeitet ;)

    Na ja... nächstes Jahr lerne ich auch endlich was im Info. Unterricht, dann verstehe ich vlt. mehr ;)

    Lächel, du kannst sie nicht alle töten.

  • Muss es immer neu "gezeichnet" werden? ^^


    Ja. Wenn du immer neu zeichnest dann ist es im Vordergrund
    Also einfach in eine Schleife packen.


    Zitat von masterRobb

    name22
    So ein Tutorial brauche ich mir gar nicht erst durchlesen XD
    Da verstehe ich eh kein Wort... die Erklärungen sind manchmal echt katastrophal ;) Selbst mein Vater (Informatiker) versteht aus der Erklärung selbst meist nichts :D


    Das glaub ich kaum.

  • Ich würde für so etwas eher GDI+ nehmen. Solange man nur sehr wenige Pixel bearbeitet geht die Variante mit PixelSetColor vielleicht noch, aber ab einer gewissen Anzahl dauert das einfach viel zu lange.

  • Um einfach bissel was zu kritzeln fänd ich diese variante ganz toll:

    [autoit]

    #include<misc.au3>
    #include<winapi.au3>
    While 1
    $mousepos= mousegetpos()
    If _ispressed(04) then _pixelsetcolor()
    wend
    Func _PixelSetColor()
    Local $hDC
    $iColor=0
    $hWnd = 0
    $hDC = _WinAPI_GetWindowDC($hWnd)
    $iColor = BitOR(BitShift(BitAND($iColor, 0xFF0000), 16), BitShift(BitAND($iColor, 0xFF), -16), BitAND($iColor, 0xFF00))
    $aRet = DllCall("gdi32.dll", "dword", "SetPixel", "handle", $hDC, "int", $mousepos[0], "int", $mousepos[1], "dword", 0xFF0000)
    If @error Then $iErr = @error

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

    _WinAPI_ReleaseDC($hWnd, $hDC)
    EndFunc ;==>_PixelSetColor

    [/autoit]

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble

  • Hier, das hatte ich gestern für ein anderes Forum erstellt.
    Starten, und mit der Shift-Taste malen ;)

    [autoit]


    #cs
    GDI+ Example - Draw on Transparent & Click-Through GUI
    by SEuBo, 24.12.2010

    http://www.elitepvpers.de/forum/autoit/9…hirm-malen.html
    #ce

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

    #include <Misc.au3>
    #include <GDIPlus.au3>
    #include <WindowsConstants.au3>

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

    ;Variablen deklarieren
    Local $hGUI, $hGraphics, $hBitmap, $hBackBuffer, $hPen
    Local $hDLL, $aMPos, $aMPos_New

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

    ;GDI+ initialisieren, DLL für _IsPressed öffnen und ESC als HotKey festlegen
    _GDIPlus_Startup()
    $hDLL = DllOpen("user32.dll")
    HotKeySet("{ESC}","_Exit")

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

    ;Transparente GUI erstellen
    $hDummy = GUICreate("") ; Dummy GUI, damit richtiges nicht in Taskleiste auftaucht.
    $hGUI = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST,$WS_EX_TRANSPARENT),$hDummy)
    GUISetBkColor(0xABCDEF, $hGUI)
    _WinAPI_SetLayeredWindowAttributes($hGUI, 0xABCDEF, 255)

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

    ;Graphic-Objekt, Pinsel und Backbuffer erstellen und GUI anzeigen
    $hPen = _GDIPlus_PenCreate(0xFFFF0000,4) ; Roten Pinsel mit Breite von 4 px.
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(@DesktopWidth, @DesktopHeight, $hGraphics)
    $hBackBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    GUISetState()

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

    While Sleep(10)
    $aMPos = MouseGetPos()

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

    While _IsPressed(10, $hDLL)
    $aMPos_New = MouseGetPos()
    ;~ If Not IsArray($aMPos) Then $aMPos = $aMPos_New

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

    If $aMPos[0] <> $aMPos_New[0] Or $aMPos[1] <> $aMPos_New[1] Then
    _GDIPlus_GraphicsDrawLine($hBackBuffer, $aMPos[0], $aMPos[1], $aMPos_New[0], $aMPos_New[1],$hPen)
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0)
    $aMPos = $aMPos_New
    EndIf
    WEnd
    WEnd

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

    Func _Exit()
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_PenDispose($hPen)
    GUIDelete($hGUI)
    Exit
    EndFunc

    [/autoit]
  • SEuBo Ach menno, das wollte ich auch gerade machen :D . Aber wenigstens sieht meins, dank Anti-Aliasing, besser aus :P.

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <Misc.au3>

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

    Opt("GUIOnEventMode", 1)

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

    HotKeySet("{ESC}", "_Exit")

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

    $vU32DLL = DllOpen("User32.dll")

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

    $iGUIColorBG = 0xFFFFFFFF
    $iGUIWidth = @DesktopWidth
    $iGUIHeight = @DesktopHeight

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

    $hWnd = GUICreate("Test", $iGUIWidth, $iGUIHeight, Default, Default, BitOR(0x80000000, 0x08000000), BitOR(0x00080000, 0x00000008, 0x00000080))
    GUISetState()

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

    _GDIPlus_Startup()

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

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iGUIWidth, $iGUIHeight, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)

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

    $hPen = _GDIPlus_PenCreate(0xFF000000, 2)

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

    $hDC = _WinAPI_GetDC($hWnd)
    $hCDC = _WinAPI_CreateCompatibleDC($hDC)

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

    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", $iGUIWidth)
    DllStructSetData($tSize, "Y", $iGUIHeight)
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    DllStructSetData($tBlend, "Alpha", 255)
    DllStructSetData($tBlend, "Format", 1)
    $tPoint = DllStructCreate($tagPOINT)
    $pPoint = DllStructGetPtr($tPoint)
    DllStructSetData($tPoint, "X", 0)
    DllStructSetData($tPoint, "Y", 0)

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

    GUIRegisterMsg($WM_PAINT, "_ReDraw")
    $aMousePosOld = MouseGetPos()

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

    While True
    $aMousePosNew = MouseGetPos()
    If _IsPressed("A3", $vU32DLL) Then
    _ReDraw()
    If $aMousePosOld[0] <> $aMousePosNew[0] Or $aMousePosOld[1] <> $aMousePosNew[1] Then _GDIPlus_GraphicsDrawLine($hBuffer, $aMousePosOld[0], $aMousePosOld[1], $aMousePosNew[0], $aMousePosNew[1], $hPen)
    $aMousePosOld = $aMousePosNew
    EndIf
    WEnd

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

    Func _ReDraw()
    Local $hBitmapTmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
    _WinAPI_SelectObject($hCDC, $hBitmapTmp)
    _WinAPI_UpdateLayeredWindow($hWnd, $hDC, 0, $pSize, $hCDC, $pSource, 0, $pBlend, 2)
    _WinAPI_DeleteObject($hBitmapTmp)
    EndFunc

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

    Func _Exit()
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_Shutdown()
    DllClose($vU32DLL)
    Exit
    EndFunc

    [/autoit]


    Hier wird mit der rechten STRG Taste gemalt.