Nochmal die leidige Transparenz

  • Hallo,

    Ich Möchte ein Popup-Fenster erstellen mit Hintergrundbild und darauf ein Label.
    Das Hintergrundbild enthält die Farbe 0xABCDEF, diese soll Transparent werden (Das klappt soweit auch)
    Füge ich nun ein Label ein, wird der Hintergrund des Labels eben falls transparent (nicht erwüscht)

    Vielleicht hann mir ja jemand helfen und mir verraten, wo der Denkfehler liegt.

    ein bisschen Code

    [autoit]

    #cs ---------------
    ESC zum Beenden

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

    Ziel: Transparentes Fenster mit Label

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

    #ce ---------------

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

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <WINAPI.au3>

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

    ; Gui Erstellen
    $hGuiOSD = GUICreate("Fenstertitel", 640, 480, 10, 10, $WS_POPUP, $WS_EX_LAYERED)

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

    ;Hintergrundbild einfügen (Enthält die Farbe 0xABCDEF diese soll transparent werden)
    GuiCtrlCreatePic("Hintergrund.gif",0,10, 640, 480,-1,$GUI_WS_EX_PARENTDRAG)

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

    ;Label einfügen
    GUICtrlCreateLabel("Labeltext",100,100,150,30)

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

    ;Font fürs Label einstellen
    GUICtrlSetFont(-1, 20, 400)

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

    ;Hintergrundfarbe für GUI
    GUISetBkColor(0xABCDEF)

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

    ;Transparenz erzeugen
    _WinAPI_SetLayeredWindowAttributes($hGuiOSD,0xABCDEF, 255)

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

    ;Gui anzeigen
    GUISetState(@SW_SHOW,$hGuiOSD)

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

    ; Auf Events reagieren
    While 1
    $guiMsg = GUIGetMsg()
    Switch $guiMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Gruß DasOmen

    Einmal editiert, zuletzt von DasOmen (29. November 2010 um 11:29)

    • Offizieller Beitrag
    [autoit]

    #cs ---------------
    ESC zum Beenden

    Ziel: Transparentes Fenster mit Label

    #ce ---------------

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

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <WINAPI.au3>

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

    ; Gui Erstellen
    $hGuiOSD = GUICreate("Fenstertitel", 640, 480, 10, 10, $WS_POPUP, $WS_EX_LAYERED)

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

    ;Hintergrundbild einfügen (Enthält die Farbe 0xABCDEF diese soll transparent werden)
    GUICtrlCreatePic("Hintergrund.gif", 0, 10, 640, 480, -1, $GUI_WS_EX_PARENTDRAG)

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

    ;Label einfügen
    GUICtrlCreateLabel("Labeltext", 100, 100, 150, 30)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    ;Font fürs Label einstellen
    GUICtrlSetFont(-1, 20, 400)

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

    ;Hintergrundfarbe für GUI
    GUISetBkColor(0xABCDEF)

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

    ;Transparenz erzeugen
    _WinAPI_SetLayeredWindowAttributes($hGuiOSD, 0xABCDEF, 255)

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

    ;Gui anzeigen
    GUISetState(@SW_SHOW, $hGuiOSD)

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

    ; Auf Events reagieren
    While 1
    $guiMsg = GUIGetMsg()
    Switch $guiMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • Erstmal Danke für eure Mühe,
    Ich Habe mal ein Bildchen angehängt um mein Problem zu verdeutlichen. (Hoffe das hat geklappt)

    Wurde mit Raupi´s Codezeile erzeugt.

    [autoit]

    GUICtrlSetBkColor(-1, 0xFFFFFF)

    [/autoit]


    Ohne Zeile wird das Label tranparent (Desktop scheint durch)

    Ich Möchte aber dass, das Hintergrundbild durchscheint.(Die Papierrolle)

    Ich Kämpfe noch mit BugFixx´ Vorschlag

    Gruß DasOmen

    • Offizieller Beitrag

    Poste mal dein Script und hänge das Hintergrundbild an.

  • Hier mein Script

    Spoiler anzeigen
    [autoit]

    #cs ---------------
    ESC zum Beenden

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

    Ziel: Transparentes Fenster mit Label

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

    #ce ---------------

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

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <WINAPI.au3>

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

    ; Gui Erstellen
    $hGui = GUICreate("Fenstertitel", 640, 480, 10, 10, $WS_POPUP, $WS_EX_LAYERED)

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

    ;Hintergrundbild einfügen (Enthält die Farbe 0xABCDEF diese soll transparent werden)
    GuiCtrlCreatePic("roll.gif",0,0, 640, 480,-1,$GUI_WS_EX_PARENTDRAG)

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

    ;Hintergrundfarbe für GUI
    GUISetBkColor(0xABCDEF)

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

    ;Transparenz erzeugen
    _WinAPI_SetLayeredWindowAttributes($hGui,0xABCDEF, 255)

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

    ;------------------------------------------------------------------------------------
    ; Child Gui erstellen
    $hChild = GUICreate("Child",150, 30, 100, 100, $WS_POPUP,$WS_EX_MDICHILD, $hGui)

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

    ;Label einfügen
    GUICtrlCreateLabel("Labeltext",0,0,150,30)

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

    ;Font fürs Label einstellen
    GUICtrlSetFont(-1, 20, 400)
    ;-------------------------------------------------------------------------------------

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

    ;Gui anzeigen
    GUISetState(@SW_SHOW,$hGui)

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

    ;Child Gui anzeigen
    GUISetState(@SW_SHOW,$hChild)

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

    ; Auf Events reagieren
    While 1
    $guiMsg = GUIGetMsg()
    Switch $guiMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    [/autoit]

    Danke für die Mühe

  • Meinst Du das so?

    Spoiler anzeigen
    [autoit]

    ; Gui Erstellen
    $hGuiOSD = GUICreate("Fenstertitel", 640, 480, 10, 10, $WS_POPUP, $WS_EX_LAYERED)

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

    ;Hintergrundbild einfügen (Enthält die Farbe 0xABCDEF diese soll transparent werden)
    GUICtrlCreatePic("roll.gif", 0, 10, 640, 480, -1, $GUI_WS_EX_PARENTDRAG)

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

    ;Label einfügen
    GUICtrlCreateLabel("Labeltext", 100, 100, 150, 30)

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

    ; Hintergrundfarbe fürs Label = Transparent
    ; Ohne Farbvorgabe übernimmt das Label die Hintergrundfarbe des GUI
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)

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

    ;Font fürs Label einstellen
    GUICtrlSetFont(-1, 20, 400)

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

    ;Hintergrundfarbe für GUI
    GUISetBkColor(0xABCDEF)

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

    ;Transparenz erzeugen
    _WinAPI_SetLayeredWindowAttributes($hGuiOSD, 0xABCDEF, 255)

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

    ;Gui anzeigen
    GUISetState(@SW_SHOW, $hGuiOSD)

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Hallo Großvater,
    ja, genau so meinte ich das.

    Ich weiß jetzt auch wo mein Denkfehler lag:

    [autoit]

    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)

    [/autoit]


    Mein Denkfehler lag bei der transparenten Farbe, ich war der Überzeugung, dass die gewählte Farbe nun auch in $GUI_BKCOLOR_TRANSPARENT hinterlegt ist.
    Jetzt ist mir auchder Sinn von KONSTANTEN klar :D

    Danke allen

    Das Omen