GuiCtrlCreateIcon

  • Hey Autoitler,
    ich hab wiedermal ne kleine Frage.
    Ich habe auf einer Gui einen schwarzen Hintergrund, auf der ich mit GuiCtrlCreateIcon ein Icon zeichne (.ico - Format).
    Eigentlich hat dieses keinen weißen Rand. Doch wenn ich das dann in der Gui hab, wird um dieses Icon ein weißes Viereck gemalt. Ich habe in euren Beispielen,
    wie z.B.akutell an dem Starplayer von Oscar gesehen, dass es möglich ist, das nur das Icon angezeigt wird. Ich hab das sogar bei einem Programm bereits hinbekommen, nur hab ich dieses aus Dummheit, wie mir jetzt aufgeht, gelöscht.

    Wie bekomme ich NUR das Icon auf die Gui, ohne weißes Viereck drumherum?
    Danke im Vorraus!

    Viele Grüße,
    stayawayknight

  • Poste doch mal dein Script.. so ohne weiteres kommt man ohne genaue Anhaltspunkte nicht auf den Fehler..
    ich vermute mal das das Icon standardmäßig wirklich einen weißen Hintergrund hat es jedoch wo anders ausgeschnitten angezeigt wird..

  • Nein, das Bild hat keinen weißen Hintergrund in echt ....

    Spoiler anzeigen
    [autoit]


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

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

    $title = ""
    $guiwidth = 625
    $guiheight = 416
    $guix = 363
    $guiy = 134
    $picpath = @ScriptDir & "\pic\"

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

    Opt("TrayAutoPause", 0)
    Opt("TraymenuMode", 1)

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

    ;###Gui Start
    $main = GUICreate($title, $guiwidth, $guiheight, $guix, $guiy)
    GUISetBkColor(0x000000)
    GUISetState(@SW_SHOW)
    GUISetIcon($picpath & "star.ico")
    Opt("GuiOnEventMode", 1)
    Opt("TrayOnEventMode", 1)
    Opt("GuiCloseOnEsc", 1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "ende")
    ;###Gui Ende

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

    ;###GDIPlus Start
    _GDIPlus_Startup()
    $graphics = _GDIPlus_GraphicsCreateFromHWND($main)
    $bk = _GDIPlus_ImageLoadFromFile($picpath & "bk.jpg")

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

    _GDIPlus_GraphicsDrawImageRect($graphics, $bk, 0, 0, $guiwidth, $guiheight)
    ;###GDIPlus Ende

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

    ;###Controls Start
    $icon = GUICtrlCreateIcon($picpath & "star.ico", "", 100, 100, 100, 100, $SS_ICON)
    ;###Controls Ende

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

    While 1
    Sleep(250)
    WEnd

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

    Func ende2()
    Exit
    EndFunc ;==>ende2

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

    Func ende()
    _GDIPlus_GraphicsDispose($graphics)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>ende

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

    Einmal editiert, zuletzt von stayawayknight (21. Juli 2010 um 20:51)

    • Offizieller Beitrag

    Poste mal dein Icon.

  • Sorry, bekomm es nicht geuploadet, weil es ein .ico ist. Hat aber definitiv kein weißes Rechteck drumherum, außerdem konnte ich genau das Icon bereits ohne Umstände mit

    [autoit]

    GuiSetIcon()

    [/autoit]

    in die Titelleiste einbauen

    • Offizieller Beitrag
    Zitat

    Sorry, bekomm es nicht geuploadet, weil es ein .ico ist.


    Nimm dein Icon um packe es in eine Zip Datei, dann kannst du es auch uploaden.

    Zitat

    Wenn sich unter dem Icon ein Bild befindet, dann funktioniert die Transparenz des Icons nicht. Bei meinem Starplayer habe ich getrickst (Tranparenz durch Hintergrund des Bildes ersetzt). ;)


    Oscar ,
    ist das auch so, wenn man das Icon auf eine ChildGui setzt?

  • so habs jetzt geuploadet...
    Das weiße Rechteck muss weg :cursing:


    Edit: Noch eine Namerkung was mir aufgefallen ist: Verschiebe ich das Fenster außerhalb des Desktopes, verschwindet nur das weiße Quadrat, das Icon bleibt - optisch her wie gewünscht. Also das wieße Rechteck verschwindet wenn die WM_Paint Funktion ausgelöst wird, sozusagen...

    Hintergrundbild auch noch angehängt, auch wenn nicht viel zu sehen ist

    • Offizieller Beitrag

    Wenn man dir schon helfen soll dann poste auch ein Lauffähiges Script. Das Script aus Post 3 kann nicht laufen, die Variablen sind nicht deklariert($title, $guiwidth, $guiheight, $guix, $guiy).

  • So jetzt:


    Spoiler anzeigen
    [autoit]


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

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

    $title = ""
    $guiwidth = 625
    $guiheight = 416
    $guix = 363
    $guiy = 134
    $picpath = @ScriptDir & "\pic\"

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

    Opt("TrayAutoPause", 0)
    Opt("TraymenuMode", 1)

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

    ;###Gui Start
    $main = GUICreate($title, $guiwidth, $guiheight, $guix, $guiy)
    GUISetBkColor(0x000000)
    GUISetState(@SW_SHOW)
    GUISetIcon($picpath & "star.ico")
    Opt("GuiOnEventMode", 1)
    Opt("TrayOnEventMode", 1)
    Opt("GuiCloseOnEsc", 1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "ende")
    ;###Gui Ende

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

    ;###GDIPlus Start
    _GDIPlus_Startup()
    $graphics = _GDIPlus_GraphicsCreateFromHWND($main)
    $bk = _GDIPlus_ImageLoadFromFile($picpath & "bk.jpg")

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

    _GDIPlus_GraphicsDrawImageRect($graphics, $bk, 0, 0, $guiwidth, $guiheight)
    ;###GDIPlus Ende

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

    ;###Controls Start
    $icon = GUICtrlCreateIcon($picpath & "star.ico", "", 100, 100, 100, 100, $SS_ICON)
    ;###Controls Ende

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

    While 1
    Sleep(250)
    WEnd

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

    Func ende2()
    Exit
    EndFunc ;==>ende2

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

    Func ende()
    _GDIPlus_GraphicsDispose($graphics)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>ende

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • versuch mal das:

    Spoiler anzeigen
    [autoit]

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

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

    $title = ""
    $guiwidth = 625
    $guiheight = 416
    $guix = 363
    $guiy = 134
    $picpath = @ScriptDir & "\pic\"

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

    Opt("TrayAutoPause", 0)
    Opt("TraymenuMode", 1)

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

    ;###Gui Start
    $main = GUICreate($title, $guiwidth, $guiheight, $guix, $guiy)
    GUISetState(@SW_SHOW)
    GUISetIcon($picpath & "star.ico")
    Opt("GuiOnEventMode", 1)
    Opt("TrayOnEventMode", 1)
    Opt("GuiCloseOnEsc", 1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "ende")
    ;###Gui Ende

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

    ;###GDIPlus Start
    _GDIPlus_Startup()
    $graphics = _GDIPlus_GraphicsCreateFromHWND($main)
    $bk = _GDIPlus_ImageLoadFromFile($picpath & "bk.jpg")

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

    _GDIPlus_GraphicsDrawImageRect($graphics, $bk, 0, 0, $guiwidth, $guiheight)
    ;###GDIPlus Ende

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

    ;###Controls Start
    $icon = GUICtrlCreateIcon($picpath & "star.ico", "", 100, 100, 150, 150, $SS_ICON)
    GUISetBkColor(0x000000)
    ;###Controls Ende

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

    While 1
    Sleep(250)
    WEnd

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

    Func ende2()
    Exit
    EndFunc ;==>ende2

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

    Func ende()
    _GDIPlus_GraphicsDispose($graphics)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>ende

    [/autoit]

    Einmal editiert, zuletzt von Inferior (21. Juli 2010 um 23:00)