"Transparenter" Slider?

  • Sollte jemand ein Script für transparente Slider suchen , name22 und ich haben da eine kleine Func gebaut.

    Spoiler anzeigen
    [autoit]

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

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

    ;GUI
    $test = GUICreate("Test", 400, 400)
    $cBG = GUICtrlCreatePic(FileOpenDialog("Hintergrundbild", "", "Bilder (*.jpg;*.bmp;*.gif)"), 0, 0, 400, 400)
    GUISetState()

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

    _GuiCtrlCreateTransSlider(0,0,200,50,$test)

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

    While GUIGetMsg() <> $GUI_EVENT_CLOSE
    WEnd

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

    Func _GuiCtrlCreateTransSlider($left,$top,$width,$height,$hWnd_Main)
    $hWnd_Slider = GUICreate("", $width, $height, $left, $top, $WS_POPUP, BitOR($WS_EX_MDICHILD, $WS_EX_LAYERED), $hWnd_Main)
    $cSlider = GUICtrlCreateSlider(0, 0, $width, $height)
    GUICtrlSetBkColor(-1, 0xABCDEF)
    _WinAPI_SetLayeredWindowAttributes($hWnd_Slider, 0xABCDEF)
    GUISetState()
    GUISwitch($hWnd_Main)
    Return $cSlider
    EndFunc

    [/autoit]

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

    Einmal editiert, zuletzt von hellboy3 (4. Juli 2011 um 20:16)

  • Selber basteln!


    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <Misc.au3>

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

    Opt("MouseCoordMode", 2)

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

    $Form1 = GUICreate("Transparenter Slider?", 282, 158, 375, 262)
    $Pic = GUICtrlCreatePic(@ScriptDir & "/pic.jpg",0,0,300,300, 0)

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

    $Slider1 = GUICtrlCreateSlider(20, 26, 200, 25)

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

    $Slider2a = GUICtrlCreateLabel("", 20, 86, 200, 2, 0x1000)
    $Slider2b = GUICtrlCreateButton("", 30, 76, 10, 20)

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

    $Anzeige = GUICtrlCreateLabel("0 %", 240, 76, 30, 20, 0x201)
    GUICtrlSetBkColor(-1, -2)

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

    GUISetState()

    Local $Pos, $MousePosX, $Diff, $Stellung, $Stellung_alt
    Local $0Prozent = 30
    Local $100Prozent = 200

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    $aInfo = GUIGetCursorInfo()
    If $aInfo[2] = 1 And $aInfo[4] = $Slider2b Then
    $Pos = ControlGetPos($Form1, "", $Slider2b)
    $MousePosX = MouseGetPos(0)
    $Diff = $MousePosX - $Pos[0]
    Do
    If MouseGetPos(0) - $Diff < $0Prozent Then
    GUICtrlSetPos($Slider2b, $0Prozent, $Pos[1])
    ElseIf MouseGetPos(0) > ($100Prozent) Then
    GUICtrlSetPos($Slider2b, $100Prozent, $Pos[1])
    Else
    GUICtrlSetPos($Slider2b, $MousePosX - $Diff, $Pos[1])
    EndIf
    $Pos = ControlGetPos($Form1, "", $Slider2b)
    $MousePosX = MouseGetPos(0)
    $Stellung = StringFormat("%3.0f %%", 100 * ($Pos[0] - $0Prozent)/ ($100Prozent - $0Prozent))
    If $Stellung <> $Stellung_alt Then
    GUICtrlSetData($Anzeige, $Stellung)
    EndIf
    $Stellung_alt = $Stellung
    Sleep(20)
    Until Not _IsPressed("01")
    EndIf
    WEnd

    [/autoit]

    Du kannst aber auch folgenden Style probieren:

    [autoit]

    Global Const $TBS_TRANSPARENTBKGND = 0x1000

    [/autoit]


    Keine Ahnung ob das funktioniert, den Style gibt's erst für Vista und darüber!

  • Sorry das ich meinen alten Thread nochmal ausgrabe aber da das Thema immernoch das Selbe ist ..... :S
    funkey: Die Funktion ist wirklich gut , nur leider muss ich den Slider wie ein herkömmliches Control behandeln können (guictrlsetdata,guictrlread,usw..).

    Gibt es noch eine andere Möglichkeit einen transparenten Slider zu erstellen.
    I-wie mit ner versteckten gui oder sowas? ?(
    Ging da nicht was mit

    [autoit]

    $WS_EX_LAYERED

    [/autoit]

    ?

    Den Style habe ich auf Win7 32Bit ausprobiert , bekomme aber nur einen schwarzen hintergrund...

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

    Einmal editiert, zuletzt von hellboy3 (13. Januar 2011 um 12:34)

  • So könntest du es auch machen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>

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

    $hWnd = GUICreate("Test", 400, 400, 500, 500)
    GUISetState()

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

    $aWinPos = _WinGetClientPosEx($hWnd)
    $hWnd_Slider = GUICreate("", 200, 60, $aWinPos[0] + 5, $aWinPos[1] + 5, $WS_POPUP, -1, $hWnd)
    $cSlider = GUICtrlCreateSlider(0, 0, 200, 60)
    WinSetTrans($hWnd_Slider, "", 100)
    GUISetState()

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

    GUIRegisterMsg($WM_MOVE, "WM_MOVE")

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func _WinGetClientPos($hWnd) ; - Author: name22 (http://www.autoit.de)
    $iOptMouseCoord = Opt("MouseCoordMode", 1)

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

    $aMousePosAbs = MouseGetPos()
    $aMousePosRel = GUIGetCursorInfo($hWnd)

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

    Opt("MouseCoordMode", $iOptMouseCoord)

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

    Return StringSplit($aMousePosAbs[0] - $aMousePosRel[0] & ":" & $aMousePosAbs[1] - $aMousePosRel[1], ":", 2)
    EndFunc

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

    Func WM_MOVE()
    $aWinPosTmp = _WinGetClientPosEx($hWnd)
    WinMove($hWnd_Slider, "", $aWinPosTmp[0] + 5, $aWinPosTmp[1] + 5)
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]