1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Nestos

Beiträge von Nestos

  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 28. April 2009 um 18:18

    Ich hab da jetzt noch ein Problem mit den durchsichtigen Ellipsen. Ich hab jetzt ein sich öffnendes Auge gezeichnet, aber es flimmert.

    Skript:

    Sich öffnendes Auge
    [autoit]

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

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

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

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

    Global $Anzahl = @DesktopWidth / 2
    Global Const $WS_EX_COMPOSITED = 0x2000000
    Global $Ellipse[$Anzahl]

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

    $my_gui = GUICreate("MyGUI", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP,BitOR( $WS_EX_TOPMOST,$WS_EX_LAYERED, $WS_EX_COMPOSITED))
    GUISetBkColor(0x000000)
    GUISetState(@SW_SHOW)

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

    For $i = $Anzahl - 1 To 1 Step -1
    $Ellipse[$i] = _DrawTransparentEllipse ($my_gui, @DesktopWidth/16, @DesktopHeight/8 + $i / 2, @DesktopWidth/1.15, @DesktopHeight/1.30 - $i, 255)
    Sleep (5)
    If $i > 1 Then
    GUIDelete ($Ellipse[$i-1])
    EndIf
    Next

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

    While 1
    Sleep (100)
    WEnd

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

    Func _WinAPI_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $dwFlages = 0x03, $isColorRef = False)
    ; progandy
    If $dwFlages = Default Or $dwFlages = "" Or $dwFlages < 0 Then $dwFlages = 0x03
    If Not $isColorRef Then
    $i_transcolor = Hex(String($i_transcolor), 6)
    $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
    EndIf
    Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $dwFlages)
    Select
    Case @error
    Return SetError(@error, 0, 0)
    Case $Ret[0] = 0
    Return SetError(4, _WinAPI_GetLastError(), 0)
    Case Else
    Return 1
    EndSelect
    EndFunc ;==>_WinAPI_SetLayeredWindowAttributes

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

    Func _Exit()
    Exit
    EndFunc

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

    Func _DrawTransparentEllipse($hwnd, $x, $y, $w, $h, $Transparency = 255)
    $Child=GUICreate ("", $w, $h, $x, $y, $WS_CHILD, -1, $hwnd )
    _WinAPI_SetLayeredWindowAttributes($hwnd, 0xABCDEF, $Transparency)
    GUISetBkColor (0xABCDEF, $Child )
    _GuiRoundCorners ($Child, 0, 0, $w, $h)
    GUISetState()
    Return $Child
    EndFunc

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

    Func _GuiRoundCorners($hWnd, $x1, $y1, $x3, $y3)
    Local $pos, $ret, $ret2
    $pos = WinGetPos($hWnd)
    $ret = DllCall('gdi32.dll', 'long', 'CreateRoundRectRgn', 'long', $x1, 'long', $y1, 'long', $pos[2], 'long', $pos[3], 'long', $x3, 'long', $y3)
    If $ret[0] Then
    $ret2 = DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $hWnd, 'long', $ret[0], 'int', 1)
    If $ret2[0] Then
    Return 1
    Else
    Return 0
    EndIf
    Else
    Return 0
    EndIf
    EndFunc

    [/autoit]

    Hätte wer eine Lösung gegen das flimmern?

  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 27. April 2009 um 21:53

    Unter Vista funtktioniert auch die Desktop Disco nicht richtig :/

    Und nein ich benutz das nicht wenn ich runterfahr. ^^

    Danke für den Hinweis, habs sofort rausgenommen!

  • "WinFX"-UDF

    • Nestos
    • 27. April 2009 um 19:29

    Edit:
    Ich hab die UDF mal zusammengefasst und noch ein Beispiel hinzugefügt.

    WinFX
    [autoit='WinFX']

    Global $WinFX_EyeAnzahl = @DesktopWidth / 2
    Global $WinFX_EyeEllipse[$WinFX_EyeAnzahl + 1]


    Func _WinFX_ResizeWindow($sWindow,$width, $height,$step=5)
    $sTitle=WinGetTitle($sWindow)
    $sText=WinGetText($sWindow)
    $hHandle=WinGetHandle($sWindow)
    $pos=WinGetPos($sTitle)
    If not IsArray($pos) Then return false
    $oldwidth=$pos[2]
    $oldheight=$pos[3]
    $oldx=$pos[0]
    $oldy=$pos[1]
    $wdiff=$width-$oldwidth
    $hdiff=$height-$oldheight
    $j=0
    $i=0
    $wStep=$step
    $hStep=$step
    If $wdiff < 0 then $wStep = - $wStep
    If $hdiff < 0 then $hStep = - $hStep
    while Abs($i) <= Abs($wdiff) Or Abs($j) <= Abs($hdiff)
    If Abs($i) <= Abs($wdiff) Then $i += $wStep
    If Abs($j) <= Abs($hdiff) Then $j += $hStep
    MsgBox(0,"","newwidth=" & $oldwidth+$i & @CRLF & "newheight=" & $oldheight+$j & @CRLF & "i=" & $i)
    WinMove($sTitle,"",$oldx,$oldy,$oldwidth+$i,$oldheight+$j)
    WEnd
    Return $pos
    EndFunc
    Func _WinFX_FlashDesktop($iSpeed=3,$hColor=0xffffff)
    ;Remarks: Don't use AdLib with this
    GUICreate("Flash",@DesktopWidth,@DesktopHeight,0,0,0x80000000,0x00000080)
    GUISetBkColor($hColor)
    WinSetTrans("Flash","",240)
    GUISetState()
    For $i=100 To 255 step 5
    WinSetTrans("Flash","",$i)
    Next
    For $i=255 To 0 step -$iSpeed
    WinSetTrans("Flash","",$i)
    Next
    if not @error then return true
    EndFunc
    Func _WinFX_CloseDesktop($iSleep=1000)
    $guieins=GUICreate("CloseDesktop.1",@DesktopWidth,0,0,0,0x80000000,BitOr(0x00000080,0x00000008))
    $guizwei=GUICreate("CloseDesktop.2",@DesktopWidth,0,0,@DesktopHeight,0x80000000,BitOr(0x00000080,0x00000008))
    GUISetBkColor(0x000000,$guieins)
    GUISetBkColor(0x000000,$guizwei)
    GUISetState(@SW_SHOW,$guieins)
    GUISetState(@SW_SHOW,$guizwei)
    For $i=1 To @DesktopHeight
    WinMove("CloseDesktop.1","",0,0,@DesktopWidth,$i)
    WinMove("CloseDesktop.2","",0,(@DesktopHeight)-$i,@DesktopWidth,$i)
    Next
    sleep($iSleep)
    GUIDelete($guieins)
    GUIDelete($guizwei)
    EndFunc
    Func _WinFX_OpenDesktop($iSleep=1000)
    $guieins=GUICreate("CloseDesktop.1",@DesktopWidth,0,0,0,0x80000000,BitOr(0x00000080,0x00000008))
    $guizwei=GUICreate("CloseDesktop.2",@DesktopWidth,0,0,@DesktopHeight,0x80000000,BitOr(0x00000080,0x00000008))
    GUISetBkColor(0x000000,$guieins)
    GUISetBkColor(0x000000,$guizwei)
    GUISetState(@SW_SHOW,$guieins)
    GUISetState(@SW_SHOW,$guizwei)
    For $i=@DesktopHeight to 1 step -1
    WinMove("CloseDesktop.1","",0,0,@DesktopWidth,$i)
    WinMove("CloseDesktop.2","",0,(@DesktopHeight)-$i,@DesktopWidth,$i)
    Next
    sleep($iSleep)
    GUIDelete($guieins)
    GUIDelete($guizwei)
    EndFunc
    Func _WinFXCloseDesktop_Eye()
    $my_gui = GUICreate("MyGUI", @DesktopWidth, @DesktopHeight, 0, 0, 0x80000000, BitOR( 0x00000008, 0x00080000, 0x2000000))
    GUISetBkColor(0x000000)
    GUISetState(@SW_SHOW)

    For $i = 1 To $WinFX_EyeAnzahl - 1 Step + 1
    $WinFX_EyeEllipse[$i] = _DrawTransparentEllipse ($my_gui, @DesktopWidth/16, @DesktopHeight/8 + $i / 2, @DesktopWidth/1.15, @DesktopHeight/1.30 - $i, 255)
    Sleep (5)
    GUIDelete ($WinFX_EyeEllipse[$i-1])
    Next
    EndFunc
    Func _WinFXOpenDesktop_Eye()
    $my_gui = GUICreate("MyGUI", @DesktopWidth, @DesktopHeight, 0, 0, 0x80000000, BitOR( 0x00000008, 0x00080000, 0x2000000))
    GUISetBkColor(0x000000)
    GUISetState(@SW_SHOW)

    For $i = $WinFX_EyeAnzahl - 1 To 1 Step -1
    $WinFX_EyeEllipse[$i] = _DrawTransparentEllipse ($my_gui, @DesktopWidth/16, @DesktopHeight/8 + $i / 2, @DesktopWidth/1.15, @DesktopHeight/1.30 - $i, 255)
    GUIDelete ($WinFX_EyeEllipse[$i+1])
    Next
    EndFunc
    Func _DrawTransparentEllipse($hwnd, $x,$y,$w,$h,$Transparency=255)
    $Child = GUICreate ( "", $w, $h, $x, $y, 0x40000000, -1, $hwnd )
    _WinAPI_SetLayeredWindowAttributes($hwnd, 0xABCDEF, $Transparency)
    GUISetBkColor ( 0xABCDEF, $Child )
    _GuiRoundCorners ( $Child, 0, 0, $w, $h)
    GUISetState()
    Return $Child
    EndFunc
    Func _GuiRoundCorners($hWnd, $x1, $y1, $x3, $y3)
    Local $pos, $ret, $ret2
    $pos = WinGetPos($hWnd)
    $ret = DllCall('gdi32.dll', 'long', 'CreateRoundRectRgn', 'long', $x1, 'long', $y1, 'long', $pos[2], 'long', $pos[3], 'long', $x3, 'long', $y3)
    If $ret[0] Then
    $ret2 = DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $hWnd, 'long', $ret[0], 'int', 1)
    If $ret2[0] Then
    Return 1
    Else
    Return 0
    EndIf
    Else
    Return 0
    EndIf
    EndFunc
    Func _WinAPI_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $dwFlages = 0x03, $isColorRef = False)
    ; progandy
    If $dwFlages = Default Or $dwFlages = "" Or $dwFlages < 0 Then $dwFlages = 0x03
    If Not $isColorRef Then
    $i_transcolor = Hex(String($i_transcolor), 6)
    $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
    EndIf
    Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $dwFlages)
    Select
    Case @error
    Return SetError(@error, 0, 0)
    Case $Ret[0] = 0
    Return SetError(4, __WinAPI_GetLastError(), 0)
    Case Else
    Return 1
    EndSelect
    EndFunc ;==>_WinAPI_SetLayeredWindowAttributes
    Func __WinAPI_GetLastError()
    Local $aResult

    $aResult = DllCall("Kernel32.dll", "int", "GetLastError")
    If @error Then Return SetError(@error, 0, 0)
    Return $aResult[0]
    EndFunc

    [/autoit]
    Beispiel
    [autoit='Beispiel']

    #include <WinFX.au3>

    _WinFXCloseDesktop_Eye()
    Sleep(1000)
    _WinFXOpenDesktop_Eye()

    Sleep(5000)
    Exit

    [/autoit]

    LG,
    H2112

  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 27. April 2009 um 19:19

    Sehr schön! :D

    Das is perfekt!

    Danke für eure Hilfe!

    So hab ichs angewendet:

    Schließendes Auge
    [autoit]

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

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

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

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

    Global $Anzahl = @DesktopWidth / 2
    Global Const $WS_EX_COMPOSITED = 0x2000000
    Global $Ellipse[$Anzahl]

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

    $my_gui = GUICreate("MyGUI", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP,BitOR( $WS_EX_TOPMOST,$WS_EX_LAYERED, $WS_EX_COMPOSITED))
    GUISetBkColor(0x000000)
    GUISetState(@SW_SHOW)

    _WinAPI_SetLayeredWindowAttributes($my_gui, 0xABCDEF, 255)

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

    For $i = 1 To $Anzahl - 1 Step + 1
    $Ellipse[$i] = _DrawTransparentEllipse ($my_gui, @DesktopWidth/16, @DesktopHeight/8 + $i / 2, @DesktopWidth/1.15, @DesktopHeight/1.30 - $i, 255)
    Sleep (10)
    If $Anzahl > 1 Then
    GUIDelete ($Ellipse[$i-1])
    EndIf
    Next

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

    While 1
    Sleep (100)
    WEnd

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

    Func _WinAPI_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $dwFlages = 0x03, $isColorRef = False)
    ; progandy
    If $dwFlages = Default Or $dwFlages = "" Or $dwFlages < 0 Then $dwFlages = 0x03
    If Not $isColorRef Then
    $i_transcolor = Hex(String($i_transcolor), 6)
    $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
    EndIf
    Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $dwFlages)
    Select
    Case @error
    Return SetError(@error, 0, 0)
    Case $Ret[0] = 0
    Return SetError(4, _WinAPI_GetLastError(), 0)
    Case Else
    Return 1
    EndSelect
    EndFunc ;==>_WinAPI_SetLayeredWindowAttributes

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

    Func _Exit()
    Exit
    EndFunc

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

    Func _DrawTransparentEllipse($hwnd, $x,$y,$w,$h,$Transparency=255)
    $Child=GUICreate ( "", $w, $h, $x, $y, $WS_CHILD, -1, $hwnd )
    _WinAPI_SetLayeredWindowAttributes($hwnd, 0xABCDEF, $Transparency)
    GUISetBkColor ( 0xABCDEF, $Child )
    _GuiRoundCorners ( $Child, 0, 0, $w, $h)
    GUISetState()
    Return $Child
    EndFunc

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

    Func _GuiRoundCorners($hWnd, $x1, $y1, $x3, $y3)
    Local $pos, $ret, $ret2
    $pos = WinGetPos($hWnd)
    $ret = DllCall('gdi32.dll', 'long', 'CreateRoundRectRgn', 'long', $x1, 'long', $y1, 'long', $pos[2], 'long', $pos[3], 'long', $x3, 'long', $y3)
    If $ret[0] Then
    $ret2 = DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $hWnd, 'long', $ret[0], 'int', 1)
    If $ret2[0] Then
    Return 1
    Else
    Return 0
    EndIf
    Else
    Return 0
    EndIf
    EndFunc

    [/autoit]

    PS: Greek Werde deine UDF weiterentfhelen. :)

  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 26. April 2009 um 09:28

    Irgendwie muss das doch mit GUIDelete gehen :/

  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 25. April 2009 um 13:04

    Ich mein, dass man nur eine zeichnet und die dann beliebig verkleiner oder vergrößern kann.

    Und das flimmern kommt, weil beim löschen die dahinterliegende GUI ganz kurz sichtbar ist.

  • GDIPlus

    • Nestos
    • 25. April 2009 um 12:44
    Das is Alles nur geklaut :P
    [autoit]

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

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

    HotKeySet ( "!a", "_ende" )

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

    _GDIPlus_Startup()

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

    $hgui = GUICreate ( "MyGUI", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, BitOR ( $WS_EX_LAYERED, $WS_EX_TOPMOST ) )
    GUISetBkColor ( 0xABCDEF )
    _WinAPI_SetLayeredWindowAttributes($hgui, 0xABCDEF, 255)
    GUISetState ( @SW_SHOW )

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

    $hwnd=_GDIPlus_GraphicsCreateFromHWND ( $hgui )

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

    $schwarz=_GDIPlus_PenCreate ( 0xFF000000, 500, 2 )

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

    _GDIPlus_GraphicsDrawEllipse ( $hwnd, @DesktopWidth/2, @DesktopHeight/2-100, 50, 50, $schwarz )

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit

    EndSwitch
    WEnd

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

    _GDIPlus_PenDispose ( $schwarz )
    _GDIPlus_GraphicsDispose ( $hwnd )
    _GDIPlus_Shutdown()

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

    Func _ende()
    Exit
    EndFunc

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

    Func _WinAPI_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $dwFlages = 0x03, $isColorRef = False)
    ; progandy
    If $dwFlages = Default Or $dwFlages = "" Or $dwFlages < 0 Then $dwFlages = 0x03
    If Not $isColorRef Then
    $i_transcolor = Hex(String($i_transcolor), 6)
    $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
    EndIf
    Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $dwFlages)
    Select
    Case @error
    Return SetError(@error, 0, 0)
    Case $Ret[0] = 0
    Return SetError(4, _WinAPI_GetLastError(), 0)
    Case Else
    Return 1
    EndSelect
    EndFunc ;==>_WinAPI_SetLayeredWindowAttributes

    [/autoit]
  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 25. April 2009 um 12:40

    Ich habs selber auch schon gemerkt...

    Wenn man doch nur die Größe der Ellipse ändern könnte. :/

  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 25. April 2009 um 08:53

    Das schaut lsutig aus. ^^

    Muss es dann nurmehr für meine Zwecke umschreiben...

  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 24. April 2009 um 21:59

    Hey, das sieht richtig gut aus. :D

    Sehr gute Arbeit!

    Schau mir das mal für Ellipse an...

    Edit: Ne Frage:
    Wie hast du das mit esc gemacht?

  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 24. April 2009 um 17:10

    :/

    Ich hab wirklich keine Ahnung wie man das machen soll

  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 24. April 2009 um 10:48

    Man müsste die nächste vorher zeichnen und die vorherige dann erst löschen. Dann gibt es kein flimmern.
    Wüsste aber nicht wie man das anstellen sollte...

  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 23. April 2009 um 19:48

    ich will ja auch die Graphik verkleinern. Ich will sie nicht nur verschieben ;)

    Edit: Kennt irgendwer eine Funktion die das übernimmt?

  • _DrawTransparent

    • Nestos
    • 23. April 2009 um 16:20

    Find ich sehr schön ^^ Mal ein paar Funktionen, die die Transparents schon eingebaut haben...

    Weiter so :)

  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 22. April 2009 um 21:24

    Jetzt hab ich das Problem, dass wenn ich die Ellipse langsam schließen will, alles flimmert.

    Script:

    Spoiler anzeigen
    [autoit]

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

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

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

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

    Global $i = 0
    Global $Sicherheit1 = 0

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

    $my_gui = GUICreate("MyGUI", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP,BitOR( $WS_EX_TOPMOST,$WS_EX_LAYERED))
    GUISetBkColor(0x000000)
    GUISetState(@SW_SHOW)

    _WinAPI_SetLayeredWindowAttributes($my_gui, 0xABCDEF, 255)

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

    For $i = 0 To @DesktopWidth/2 - @DesktopHeight/1.30 Step 1
    _DrawTransparentEllipse()
    GUICtrlDelete ($g1)
    Next

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

    While 1
    Sleep (100)
    WEnd

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

    Func _WinAPI_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $dwFlages = 0x03, $isColorRef = False)
    ; progandy
    If $dwFlages = Default Or $dwFlages = "" Or $dwFlages < 0 Then $dwFlages = 0x03
    If Not $isColorRef Then
    $i_transcolor = Hex(String($i_transcolor), 6)
    $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
    EndIf
    Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $dwFlages)
    Select
    Case @error
    Return SetError(@error, 0, 0)
    Case $Ret[0] = 0
    Return SetError(4, _WinAPI_GetLastError(), 0)
    Case Else
    Return 1
    EndSelect
    EndFunc ;==>_WinAPI_SetLayeredWindowAttributes

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

    Func _Exit()
    Exit
    EndFunc

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

    Func _DrawTransparentEllipse()
    $g1 = GUICtrlCreateGraphic(0,0,@DesktopWidth,@DesktopHeight)
    GUICtrlSetBkColor($g1, 0x000000)
    GUICtrlSetGraphic($g1, $GUI_GR_COLOR,0xABCDEF, 0xABCDEF)
    GUICtrlSetGraphic($g1, $GUI_GR_ELLIPSE, @DesktopWidth/16, @DesktopHeight/8 - $i, @DesktopWidth/1.15, @DesktopHeight/1.30 - $i)
    GUICtrlSetGraphic($g1, $GUI_GR_REFRESH)
    GUICtrlSetGraphic($g1, $GUI_GR_LINE, 1, 1)
    EndFunc

    [/autoit]
  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 22. April 2009 um 20:17

    thx, funktioniert super ^^
    Wie schaff ich jetzt, dass die Ellipse verschwindet oder verformt wird?

    Das in der Hilfe versteh ich nicht wirklich :/

    Edit: Sry dummer Post.

    Die Lösung is GUICtrlDelete...

  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 22. April 2009 um 18:57

    Ich habs von Greek genommen und das ging ja schonmal gut.
    Aber wie ichs umgeändert hab, hat das ganze nicht mehr gefunzt 8|


    Hier das Script:

    Spoiler anzeigen
    [autoit]

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

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

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

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

    $my_gui = GUICreate("MyGUI", @DesktopWidth, @DesktopHeight, 0, 0, 0x80000000, BitOR(0x00000080, 0x00000008))
    GUISetBkColor(0x000000, $my_gui)

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

    $g1 = GUICtrlCreateGraphic(0,0,500,500)
    GUICtrlSetBkColor($g1, 0x000000)
    GUICtrlSetGraphic($g1, $GUI_GR_COLOR,0xABCDEF, 0xABCDEF)
    GUICtrlSetGraphic($g1, $GUI_GR_ELLIPSE, @DesktopWidth/16, @DesktopHeight/8, @DesktopWidth/1.15, @DesktopHeight/1.30)
    GUICtrlSetGraphic($g1, $GUI_GR_REFRESH)

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

    _WinAPI_SetLayeredWindowAttributes($my_gui, 0xABCDEF, 255)

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

    GUISetState(@SW_SHOW)

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

    While 1
    Sleep (100)
    WEnd

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

    Func _WinAPI_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $dwFlages = 0x03, $isColorRef = False)
    ; progandy
    If $dwFlages = Default Or $dwFlages = "" Or $dwFlages < 0 Then $dwFlages = 0x03
    If Not $isColorRef Then
    $i_transcolor = Hex(String($i_transcolor), 6)
    $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
    EndIf
    Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $dwFlages)
    Select
    Case @error
    Return SetError(@error, 0, 0)
    Case $Ret[0] = 0
    Return SetError(4, _WinAPI_GetLastError(), 0)
    Case Else
    Return 1
    EndSelect
    EndFunc ;==>_WinAPI_SetLayeredWindowAttributes

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit]
  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 21. April 2009 um 19:32

    Bei deiner Methode is garnichts unsichtbar ^^

    Weil du den Befehl "_WinAPI_SetLayeredWindowAttributes" nach der Ellipse setzen musst ^^

  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 21. April 2009 um 17:20

    Dann passiert eigentlich nur, dass der Hintergrund von der GUi sichtbar wird, sonst nichts...

  • Durchsichtige Ellipse mit GDI+

    • Nestos
    • 21. April 2009 um 17:04

    Das geht super ^^ Nur wie bekomm ich es hin, dass nicht die GUI sonder nur die Ellipse unsichtbar wird?

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™