GuictrlsetImage und Bmp`s , wo ist der Bug?

  • Hi Leute,
    bin auf nen komischen Bug gestoßen , beim verändern der mit GuictrlcreatePic erstellten controls durch GuictrlsetImage scheint es als würde
    das Bild nur überdeckt werden , schaut es euch am besten selbst an....

    Spoiler anzeigen
    [autoit]

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

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

    Opt('GUIOnEventMode', 1)

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

    Global $pplay = 1
    Global $GUI_Width = 300
    Global $GUI_Height = 255

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

    $hGUI = GUICreate("Bug?", $GUI_Width, $GUI_Height, 300,100,-1, BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE,$WS_EX_TOPMOST, $WS_EX_APPWINDOW))
    GUISetBkColor(0x800000)
    GUISetOnEvent(-3,"_Exit")
    $movingLabel = GUICtrlCreateLabel("Bug?",25,40,250,17)
    GUICtrlSetBkColor (-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 11, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    $searchInput = GUICtrlCreateInput("",20,190,170,20)
    $searchButton = GUICtrlCreateButton("Bug?",195,190,50,20)
    $stopbutton = GUICtrlCreatePic(@ScriptDir & "/Daten/stop.BMP",245,220,32,32)
    $pbutton = GUICtrlCreatePic(@ScriptDir & "/Daten/Play.bmp",205,220,32,32)
    GUICtrlSetOnEvent(-1,"_ytplay")
    $volumeslider = GUICtrlCreateSlider(10,223,150,25)
    GUICtrlSetData($volumeslider, 50)
    GUICtrlSetBkColor(-1,0x800000)
    $volumepic = GUICtrlCreatePic(@ScriptDir & "/Daten/Volume_Middler.BMP",160,220,32,32)
    GUISetState(@SW_SHOW)

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

    While Sleep(100)
    $iVolume = GUICtrlRead($volumeslider)

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

    If $iVolume = 0 Then
    GUICtrlSetImage($volumepic, @ScriptDir & "/Daten/Mute.BMP")
    ElseIf $iVolume < 40 Then
    GUICtrlSetImage($volumepic, @ScriptDir & "/Daten/Volume_Lowr.BMP")
    ElseIf $iVolume < 70 Then
    GUICtrlSetImage($volumepic, @ScriptDir & "/Daten/Volume_Middler.BMP")
    ElseIf $iVolume > 70 Then
    GUICtrlSetImage($volumepic, @ScriptDir & "/Daten/Volume_Highr.BMP")
    EndIf
    WEnd

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

    Func _Exit()
    Exit
    EndFunc

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

    Func _ytplay()
    If $pplay = 1 Then
    GUICtrlSetImage($pbutton,@ScriptDir & "/Daten/Pause.BMP")
    $pplay = 0
    Else
    GUICtrlSetImage($pbutton,@ScriptDir & "/Daten/Play.BMP")
    $pplay = 1
    EndIf
    EndFunc

    [/autoit]

    Es geht also um den Slider und um den Play/Pause "Button"
    Jemand ne Idee?
    (Bilder + Script im Anhang)

    MfG Hellboy

  • Hallo hellboy,

    wenn du Wert auf die Transparenz legst musst du (leider) mit GuiCtrlDelete arbeiten. Damit sich das Bild für die Lautstärke nicht so stark flackert natürlich nur wenn sich die Lautstärke ändert:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.6.1
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

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

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

    ; Script Start - Add your code below here
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <SliderConstants.au3>

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

    Opt('GUIOnEventMode', 1)

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

    Global $pplay = 1
    Global $GUI_Width = 300
    Global $GUI_Height = 255
    Global $iOldVolume = -99

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

    $hGUI = GUICreate("Bug?", $GUI_Width, $GUI_Height, 300, 100, -1);, BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE,$WS_EX_TOPMOST, $WS_EX_APPWINDOW))
    GUISetBkColor(0x800000)
    GUISetOnEvent(-3, "_Exit")
    $movingLabel = GUICtrlCreateLabel("Bug?", 25, 40, 250, 17)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 11, 800, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    $searchInput = GUICtrlCreateInput("", 20, 190, 170, 20)
    $searchButton = GUICtrlCreateButton("Bug?", 195, 190, 50, 20)
    $stopbutton = GUICtrlCreatePic(@ScriptDir & "/Daten/stop.BMP", 245, 220, 32, 32)
    $pbutton = GUICtrlCreatePic(@ScriptDir & "/Daten/Play.bmp", 205, 220, 32, 32)
    GUICtrlSetOnEvent(-1, "_ytplay")
    $volumeslider = GUICtrlCreateSlider(10, 223, 150, 25)
    GUICtrlSetData($volumeslider, 50)
    GUICtrlSetBkColor(-1, 0x800000)
    $volumepic = GUICtrlCreatePic(@ScriptDir & "/Daten/Volume_Middler.BMP", 160, 220, 32, 32)
    GUISetState(@SW_SHOW)

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

    While Sleep(100)
    $iVolume = GUICtrlRead($volumeslider)
    If $iOldVolume <> $iVolume Then
    GUICtrlDelete($volumepic)
    If $iVolume = 0 Then
    $volumepic = GUICtrlCreatePic(@ScriptDir & "/Daten/Mute.BMP", 160, 220, 32, 32)
    ElseIf $iVolume < 40 Then
    $volumepic = GUICtrlCreatePic(@ScriptDir & "/Daten/Volume_Lowr.BMP", 160, 220, 32, 32)
    ElseIf $iVolume < 70 Then
    $volumepic = GUICtrlCreatePic(@ScriptDir & "/Daten/Volume_Middler.BMP", 160, 220, 32, 32)
    ElseIf $iVolume > 70 Then
    $volumepic = GUICtrlCreatePic(@ScriptDir & "/Daten/Volume_Highr.BMP", 160, 220, 32, 32)
    EndIf
    $iOldVolume = $iVolume
    EndIf
    WEnd

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

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

    Func _ytplay()
    GUICtrlDelete($pbutton)
    If $pplay = 1 Then
    $pbutton = GUICtrlCreatePic(@ScriptDir & "/Daten/Pause.BMP", 205, 220, 32, 32)
    $pplay = 0
    Else
    $pbutton = GUICtrlCreatePic(@ScriptDir & "/Daten/Play.BMP", 205, 220, 32, 32)
    $pplay = 1
    EndIf
    GUICtrlSetOnEvent($pbutton, "_ytplay")
    EndFunc ;==>_ytplay

    [/autoit]

    leider nur ein Workaround, vielleicht kannst du es ja auch noch mit anderen Bildformaten testen,

    mfg (Auto)Bert

  • Danke dir ist viel besser ;)
    Das mit dem Flackern...mal schaun so schlimm ist es nicht...

    Ist aber an sich komisch, es muss doch etwas für scripter geben das transparenz unterstützt OHNE gleich GDI+ verwenden
    zu müssen. ?(

    Ist ja auch egal danke dir ;)


    MfG Hellboy

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

  • Mit Icons geht`s 100 % , aber die sind zu klein ....ausser mir sagt jetzt jemand : Bist du dumm machse halt größer nämlich so:...... :D

    MfG Hellboy

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

  • Mit Icons geht`s 100 % , aber die sind zu klein ....ausser mir sagt jetzt jemand : Bist du dumm machse halt größer nämlich so:...... :D

    MfG Hellboy

    Wieso ich habe deine BMP in ICO gewandelt: autoit.de/wcf/attachment/10572/ Klappt einwandfrei:

    Spoiler anzeigen
    [autoit]

    #CS ----------------------------------------------------------------------------

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

    AUTOIT VERSION: 3.3.6.1
    AUTHOR: MYNAME

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

    SCRIPT FUNCTION:
    TEMPLATE AUTOIT SCRIPT.

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

    #CE ----------------------------------------------------------------------------

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

    ; SCRIPT START - ADD YOUR CODE BELOW HERE
    #include <GUICONSTANTSEX.AU3>
    #include <WINDOWSCONSTANTS.AU3>
    #include <SLIDERCONSTANTS.AU3>

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

    Opt('GUIONEVENTMODE', 1)

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

    Global $PPLAY = 1
    Global $GUI_WIDTH = 300
    Global $GUI_HEIGHT = 255
    Global $iOldVolume = -99

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

    $HGUI = GUICreate("BUG?", $GUI_WIDTH, $GUI_HEIGHT, 300, 100, -1, BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE, $WS_EX_TOPMOST, $WS_EX_APPWINDOW))
    GUISetBkColor(0X800000)
    GUISetOnEvent(-3, "_EXIT")
    $MOVINGLABEL = GUICtrlCreateLabel("BUG?", 25, 40, 250, 17)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetFont(-1, 11, 800, 0, "MS SANS SERIF")
    GUICtrlSetColor(-1, 0X00FF00)
    $SEARCHINPUT = GUICtrlCreateInput("", 20, 190, 170, 20)
    $SEARCHBUTTON = GUICtrlCreateButton("BUG?", 195, 190, 50, 20)
    $STOPBUTTON = GUICtrlCreateIcon(@ScriptDir & "\DATEN\STOP.ICO", -1, 245, 220, 32, 32)
    $PBUTTON = GUICtrlCreateIcon(@ScriptDir & "\DATEN\PLAY.ICO", -1, 205, 220, 32, 32)
    GUICtrlSetOnEvent(-1, "_YTPLAY")
    $VOLUMESLIDER = GUICtrlCreateSlider(10, 223, 150, 25)
    GUICtrlSetData($VOLUMESLIDER, 50)
    GUICtrlSetBkColor(-1, 0X800000)
    $VOLUMEPIC = GUICtrlCreateIcon(@ScriptDir & "\DATEN\VOLUME_MIDDLER.ICO", -1, 160, 220, 32, 32)
    GUISetState(@SW_SHOW)

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

    While Sleep(100)
    $IVOLUME = GUICtrlRead($VOLUMESLIDER)
    If $iOldVolume <> $IVOLUME Then
    If $IVOLUME = 0 Then
    GUICtrlSetImage($VOLUMEPIC, @ScriptDir & "\DATEN\MUTE.ICO")
    ElseIf $IVOLUME < 40 Then
    GUICtrlSetImage($VOLUMEPIC, @ScriptDir & "\DATEN\VOLUME_LOWR.ICO")
    ElseIf $IVOLUME < 70 Then
    GUICtrlSetImage($VOLUMEPIC, @ScriptDir & "\DATEN\VOLUME_MIDDLER.ICO")
    ElseIf $IVOLUME > 70 Then
    GUICtrlSetImage($VOLUMEPIC, @ScriptDir & "\DATEN\VOLUME_HIGHR.ICO")
    EndIf
    $iOldVolume = $IVOLUME
    EndIf
    WEnd

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

    Func _EXIT()
    Exit
    EndFunc ;==>_EXIT

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

    Func _YTPLAY()
    If $PPLAY = 1 Then
    GUICtrlSetImage($PBUTTON, @ScriptDir & "\DATEN\PAUSE.ICO")
    $PPLAY = 0
    Else
    GUICtrlSetImage($PBUTTON, @ScriptDir & "\DATEN\PLAY.ICO")
    $PPLAY = 1
    EndIf
    EndFunc ;==>_YTPLAY

    [/autoit]

    mfg (Auto)Bert

  • Danke dir AutoBert , ich probier noch weng rum und setze dann auf gelöst ;)

    Edit: Ich speicher die Bmp`s mit irfan View ins ico format aber dann ist das icon drum rum schwarz? wie hastes gemacht? ?(
    Edit2: Das mit der transparenz klappt nun aber die qualität leider drunter am besten du sagst mir mit welchem prog du`s gemacht hast ;)
    Edit3: Nach langem rumprobieren hab ich`s hinbekommen....danke nochmal

    =====GELÖST==========

    MfG hellboy

    [autoit]

    Do
    _help($user)
    Until $questions = 0

    [/autoit]

    Meine Werke:
    Ste`s Web-Radio

    3 Mal editiert, zuletzt von hellboy3 (6. Juli 2010 um 14:09)