_GUICtrlMenu_CreateBitmap() v0.71 Build 2018-08-17 beta - Erstellt Icons für GUI Menüs

  • Hier meine Version, um "Icons" (eigentlich Bitmaps) in GUI Menüs darzustellen.

    UDF:

    Spoiler anzeigen

    Beispiel1:

    Spoiler anzeigen


    Gruß,

    UEZ

  • 100%ige Transparenz ist noch nicht implementiert (nur der Hintergrund ist transparent)! Ich weiß auch z.Z. nicht, ob das überhaupt möglich ist...


    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

    Einmal editiert, zuletzt von UEZ (12. Juni 2010 um 18:12)

  • klasse Sache. Daran hab ich mich letztens schonmal Probiert, nur meinst hat nicht so ganz funktioniert bzw. bei mir wird nur ein Schwarzes Quadraht erstellt ^^

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GuiMenu.au3>
    #include <GuiConstantsEx.au3>
    #Include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <StructureConstants.au3>
    #include <Constants.au3>

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

    opt("GUIOnEventMode",1)
    $hGUI = GUICreate("Menu", 200, 200)
    Global $hMenue = _GUICtrlMenu_CreateMenu()
    _GUICtrlMenu_InsertMenuItem($hMenue, 0, "Meueitem")
    _GUICtrlMenu_InsertMenuItem($hMenue, 1, "Meueitem2")
    Global $hMain = _GUICtrlMenu_CreateMenu()
    _GUICtrlMenu_InsertMenuItem($hMain, 0, "Menu", 0, $hMenue)

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

    _GUICtrlMenu_SetMenu($hGUI, $hMain)
    GUISetOnEvent(-3,"_exit")
    GUISetState()
    Set_Ioon()

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

    While 1
    Sleep(100)
    WEnd

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

    Func Set_Ioon()
    Local $hInstance = _WinAPI_GetModuleHandle("shell32.dll")
    Local $hIcon = _WinAPI_LoadImage($hInstance, 1, $IMAGE_ICON , 0, 0, $LR_DEFAULTSIZE)
    Local $hBitmap= _WinAPI_CreateBitmap(10, 10)
    Local $hBitmap_obj = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
    Local $hBuffer= _GDIPlus_ImageGetGraphicsContext($hBitmap_obj)
    _GDIPlus_GraphicsDrawImage($hBuffer, $hIcon, 0, 0)
    _GUICtrlMenu_SetItemBmp($hMenue, 0, $hBitmap)
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

    Einmal editiert, zuletzt von Darter (12. Juni 2010 um 18:44)

  • Mit WinAPI geht's "sauber" -> siehe 1. Post.

    Bestimmt ist das auch über GDI+ möglich ist, aber wie hoch ist der Aufwand gegenüber der WinAPI Variante?

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Cool Sache. Kann man bestimmt auch mal gebrauchen. Könnte man das noch so verbessern, das man die Größe der Icons im Menü angeben kann, also das sie nicht in der "Normalgröße 32x32" sondern auch zb nur auf 20x20 Pixel dargestellt werden? :?:

  • Cool Sache. Kann man bestimmt auch mal gebrauchen. Könnte man das noch so verbessern, das man die Größe der Icons im Menü angeben kann, also das sie nicht in der "Normalgröße 32x32" sondern auch zb nur auf 20x20 Pixel dargestellt werden? :?:

    Du kannst die Funktion (_GUICtrlMenu_CreateBitmap($file, $iIndex = 0, $iX = 32, $iY = 32)) auch so aufrufen, so dass die Bitmap entsprechend skaliert wird -> $iX bzw. $iY geben die Bitmap Größe an!


    Ich habe hier auch eine WinAPI-Methode ;)
    https://autoit.de/index.php?page…3013#post163013

    Danke progandy, habe bereits in meinem 1. Post die WinAPI Variante von Yashied benutzt, die deiner sehr ähnlich ist ;)

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯