Icon mit Transparentem Hintergrund?!

  • Hy, hab mal wieder eine Frage! :D

    Hab mich scho seit einiger zeit umgesehen, und konnte leider nichts passendes zu meinem Thema finden. Es wurde viel über Icons geschrieben, doch nichts trifft so wirklich auf mein Problem zu.....

    Ich möchte nur ein paar Icons in mein Programm einfügen, schaffe es jedoch nicht den Hintergrund transparent zu bekommen!

    Kann es sein, dass es an den "Button_AddIcon" - Funktionen liegt?

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

    #include <GUIConstants.au3>
    #include <file.au3>
    #include <array.au3>
    #Include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>

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

    Global Const $ILC_MASK = 0x0001
    Global Const $ILC_COLOR32 = 0x0020

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

    Global Const $BCM_FIRST = 0x1600
    Global Const $BCM_SETIMAGELIST = $BCM_FIRST + 0x0002

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

    Global Const $BUTTON_IMAGELIST_ALIGN_LEFT= 0
    Global Const $BUTTON_IMAGELIST_ALIGN_RIGHT= 1
    Global Const $BUTTON_IMAGELIST_ALIGN_TOP= 2
    Global Const $BUTTON_IMAGELIST_ALIGN_BOTTOM= 3
    Global Const $BUTTON_IMAGELIST_ALIGN_CENTER= 4

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

    $hgui = GUICreate("Manager", 440, 505 )

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

    $but1 = GUICtrlCreateButton("...", 20, 10, 100,80)
    Button_AddIcon($but1, "...ic1.ico","",$BUTTON_IMAGELIST_ALIGN_bottom)
    GUICtrlSetFont(-1, 8, 700)

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

    $but2 = GUICtrlCreateButton (" ...", 120, 10, 100,80)
    Button_AddIcon($but2, "...ic2.ico","",$BUTTON_IMAGELIST_ALIGN_bottom)
    GUICtrlSetFont(-1, 8, 700)

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

    $but3 = GUICtrlCreateButton ("...", 220, 10, 100,80)
    Button_AddIcon($but3, "...ic3.ico","",$BUTTON_IMAGELIST_ALIGN_bottom)
    GUICtrlSetFont(-1, 8, 700)

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

    $but4 = GUICtrlCreateButton ("...", 320, 10, 100,80)
    Button_AddIcon($but4, "...ic4.ico","",$BUTTON_IMAGELIST_ALIGN_bottom)
    GUICtrlSetFont(-1, 8, 700)

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

    $tab = GuiCtrlCreateTab( 20, 100, 400, 350 )

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

    GuiCtrlCreateTabItem(" Home")

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

    GUICtrlCreatePic("...\_drive.jpg",60,150,64,64)

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

    GUICtrlCreateIcon("..._folder.ico",-1, 340, 355, 64, 64, 0)

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

    GuiCtrlCreateTabItem(" Start ")

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

    GUICtrlCreatePic("...\_drive.jpg",60,150,64,64)

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

    GUICtrlCreateIcon("..._folder.ico",-1, 340, 355, 64, 64, 0)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()

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

    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    EndSelect
    WEnd

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

    ; Funktionen

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

    Func Button_AddIcon($nID, $sIconFile, $nIconID, $nAlign)
    Local $hIL = ImageList_Create(32, 32, BitOr($ILC_MASK, $ILC_COLOR32), 0, 1)

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

    Local $stIcon= DllStructCreate("int")
    ExtractIconEx($sIconFile, $nIconID, DllStructGetPtr($stIcon), 0, 1)

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

    ImageList_AddIcon($hIL, DllStructGetData($stIcon, 1))
    DestroyIcon(DllStructGetData($stIcon, 1))

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

    Local $stBIL= DllStructCreate("dword;int[4];uint")

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

    DllStructSetData($stBIL, 1, $hIL)

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

    DllStructSetData($stBIL, 2, 1, 1)
    DllStructSetData($stBIL, 2, 1, 2)
    DllStructSetData($stBIL, 2, 1, 3)
    DllStructSetData($stBIL, 2, 1, 4)

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

    DllStructSetData($stBIL, 3, $nAlign)

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

    GUICtrlSendMsg($nID, $BCM_SETIMAGELIST, 0, DllStructGetPtr($stBIL))
    EndFunc

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

    Func ImageList_Create($nImageWidth, $nImageHeight, $nFlags, $nInitial, $nGrow)
    Local $hImageList = DllCall('comctl32.dll', 'hwnd', 'ImageList_Create', _
    'int', $nImageWidth, _
    'int', $nImageHeight, _
    'int', $nFlags, _
    'int', $nInitial, _
    'int', $nGrow)
    Return $hImageList[0]
    EndFunc

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

    Func ImageList_AddIcon($hIml, $hIcon)
    Local $nIndex = DllCall('comctl32.dll', 'int', 'ImageList_AddIcon', _
    'hwnd', $hIml, _
    'hwnd', $hIcon)
    Return $nIndex[0]
    EndFunc

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

    Func ImageList_Destroy($hIml)
    Local $bResult = DllCall('comctl32.dll', 'int', 'ImageList_Destroy', _
    'hwnd', $hIml)
    Return $bResult[0]
    EndFunc

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

    Func ExtractIconEx($sIconFile, $nIconID, $ptrIconLarge, $ptrIconSmall, $nIcons)
    Local $nCount = DllCall('shell32.dll', 'int', 'ExtractIconEx', _
    'str', $sIconFile, _
    'int', $nIconID, _
    'ptr', $ptrIconLarge, _
    'ptr', $ptrIconSmall, _
    'int', $nIcons)
    Return $nCount[0]
    EndFunc

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

    Func DestroyIcon($hIcon)
    Local $bResult = DllCall('user32.dll', 'int', 'DestroyIcon', _
    'hwnd', $hIcon)
    Return $bResult[0]
    EndFunc

    [/autoit]

    Hoffe der "Code- Salat" ist etwas verständlich :wacko: , :D

    Einmal editiert, zuletzt von Maximilian_M (6. Juli 2008 um 17:42)

    • Offizieller Beitrag

    Ich möchte nur ein paar Icons in mein Programm einfügen, schaffe es jedoch nicht den Hintergrund transparent zu bekommen!

    Ich denke mal, das ist kein AutoIt-Problem. Die Icons, die du einsetzt müssen natürlich transparent sein. Um das zu erreichen gibt es verschiedene Icon-Programme, mußt mal etwas googeln.

  • Im Fall, das es wirklich nur am Transparenten Hintergrund des Icon liegt:

    IrfanView speichert auch Icon's mit tranparentem Hintergrund !

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • ;( keiner einen Vorschlag.....???

    Habs mit IrfanView versucht, ist leider nicht besser......... Hintergrund bleibt moch immer weiß !?

  • Der Hintergrund is doch transparent!

    und für später ein transparenz-tutorial
    Dem hintergrund (der später transparent sein soll) mit paint eine farbe geben die nirgendwo sonst im bild ist.
    mit irfanview öffnen, "Datei" ---> "Speichern unter", Ort und namen wählen, nich vergessen ico auszuwählen, ein häckchen bei "transparente Farbe speichern" setzen (unter ico nich png), auf "Speichern" und anschliessend auf die transparente farbe klicken.
    fertig

  • Hy,

    Das stimmt! Die Icons sind transparent, aber in meinem Tool erscheinen sie nicht transparent, sondern mit weißen Hintergrund...!

    Hab es mit IrfanView versucht, dass Icon ist eh schon transparent, ich habe auch eine andere Farbe hinzugefügt und diese transparent makiert, das hat aber auch nicht funktioniert!


    autoit.de/wcf/attachment/2608/