Ebola57 Posted May 12, 2020 Share Posted May 12, 2020 (edited) Hi community I'd like to embed .PNG files in order to use them in a GUI. My GUI is based on the excellent Metro UDF and more likely in the case I need on Metro with image button UDF written by DevMode _Metro_CreateButtonImage($Text,$ImageMap,$Left, $Top, $Width, $Height, $BG_Color = $ButtonBKColor, $Font_Color = $ButtonTextColor, $Font = "Arial", $Fontsize = 10, $FontStyle = 1, $FrameColor = "0xFFFFFF") is the function that uses the PNG image Both Resources UDF from Zedna and ResourcesEx from guiness seem out of date. And to be honnest, I never was able to use it correctly At the moment I got around the image file embedding by converting them to ICO, using their index and the function GUICtrlSetImage So … I need to embed a PNG and use it in a function Code from UEZ looks very cool but the example delivered call a <memory.au3> that I am unable to find Moreover, I Don't really understand how to code with his method Edited May 28, 2020 by Ebola57 Link to comment Share on other sites More sharing options...
UEZ Posted May 12, 2020 Share Posted May 12, 2020 Do you have a short example script and files? Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Ebola57 Posted May 12, 2020 Author Share Posted May 12, 2020 (edited) 29 minutes ago, UEZ said: Do you have a short example script and files? Sure ! Here's a short part of my script. I will make it shorter if it's confusing, because, this part is in the ùain code that became "fat" A loop creates n buttons with both on hover picture and normal one (special treatment for Configuration button that have to be at the Bottom of the gui) Embeded pictures are robot_on.png, robot_off.png, Excel_on.png, Excel_off.png ... aso Global $aMenu_Name [5] [2] = [["","robot"], _ ["","Excel"], _ ["","Spice"], _ ["","Statistiques"], _ ["","Configuration"]] ; Définitition des boutons 'Off' grisés For $i = 0 To $Nb_of_Menu - 1 If $aMenu_Button [$i + 1] [1] == "Configuration" Then $sFont_Size = 10 $aMenu_Button [$i + 1] [3] = _Metro_CreateButtonImage2 ( $aMenu_Button [$i + 1] [0], $aMenu_Button [$i + 1] [1], _Metro_ButtonImageRect ( @ScriptDir & "/" & $aMenu_Button [$i + 1] [1] & "_Off.png" ) _ , _Metro_ButtonImageRect(@ScriptDir & "/" & $aMenu_Button [$i + 1] [1] & "_On.png"), $Left + $Menu_But_Step * ($i - 1), $Top + $Height - 102, $Menu_But_Width, $Menu_But_Height, $BG_Deep, "0xFFFFFF", $sFont_Name, $sFont_Size ) $sFont_Size = 12 Else $aMenu_Button [$i + 1] [3] = _Metro_CreateButtonImage2 ( $aMenu_Button [$i + 1] [0], $aMenu_Button [$i + 1] [1], _Metro_ButtonImageRect ( @ScriptDir & "/" & $aMenu_Button [$i + 1] [1] & "_Off.png" ) _ , _Metro_ButtonImageRect(@ScriptDir & "/" & $aMenu_Button [$i + 1] [1] & "_On.png"), $Left + $Menu_But_Step * $i, $Top, $Menu_But_Width, $Menu_But_Height, $BG_Deep, "0xFFFFFF", $sFont_Name, $sFont_Size ) EndIf Next This below function mae a map structure of a given image _Metro_ButtonImageRect ( @ScriptDir & "/" & $aMenu_Button [$i + 1] [1] & "_Off.png" ) create a map structure of an input image file This function add the image to the button (I slightly modified teh original in order to get an on hover picture of different color ) $aMenu_Button [$i + 1] [3] = _Metro_CreateButtonImage2 ( $aMenu_Button [$i + 1] [0], $aMenu_Button [$i + 1] [1], _Metro_ButtonImageRect ( @ScriptDir & "/" & $aMenu_Button [$i + 1] [1] & "_Off.png" ) Visual of what it does "robot" is selected button. Excel has on hover Edited May 12, 2020 by Ebola57 Link to comment Share on other sites More sharing options...
UEZ Posted May 12, 2020 Share Posted May 12, 2020 (edited) I used the Example.au3 file and added two functions. 1) _Metro_CreateButtonFromImage() -> should create the button using an image 2) _Metro_CreateButtonWithIcon() -> should add an icon to the button to the left side I added the images using File to Base64 String' Code Generator. Here the code: expandcollapse popup; =============================================================================================================================== ; Name ..........: MetroGUI UDF Example ; Version .......: v5.1 ; Author ........: BB_19 ; =============================================================================================================================== ;!Highly recommended for improved overall performance and responsiveness of the GUI effects etc.! (after compiling): #AutoIt3Wrapper_Run_Au3Stripper=y #Au3Stripper_Parameters=/so /rm /pe ;YOU NEED TO EXCLUDE FOLLOWING FUNCTIONS FROM AU3STRIPPER, OTHERWISE IT WON'T WORK: #Au3Stripper_Ignore_Funcs=_iHoverOn,_iHoverOff,_iFullscreenToggleBtn,_cHvr_CSCP_X64,_cHvr_CSCP_X86,_iControlDelete ;Please not that Au3Stripper will show errors. You can ignore them as long as you use the above Au3Stripper_Ignore_Funcs parameters. ;Required if you want High DPI scaling enabled. (Also requries _Metro_EnableHighDPIScaling()) #AutoIt3Wrapper_Res_HiDpi=y ; =============================================================================================================================== #NoTrayIcon #include "MetroGUI-UDF\MetroGUI_UDF.au3" #include "MetroGUI-UDF\_GUIDisable.au3" ; For dim effects when msgbox is displayed #include <GUIConstants.au3> ;=======================================================================Creating the GUI=============================================================================== ;Enable high DPI support: Detects the users DPI settings and resizes GUI and all controls to look perfectly sharp. _Metro_EnableHighDPIScaling() ; Note: Requries "#AutoIt3Wrapper_Res_HiDpi=y" for compiling. To see visible changes without compiling, you have to disable dpi scaling in compatibility settings of Autoit3.exe ;Set Theme _SetTheme("DarkTeal") ;See MetroThemes.au3 for selectable themes or to add more ;Create resizable Metro GUI $Form1 = _Metro_CreateGUI("Example", 500, 300, -1, -1, True) ;Add/create control buttons to the GUI $Control_Buttons = _Metro_AddControlButtons(True, True, True, True, True) ;CloseBtn = True, MaximizeBtn = True, MinimizeBtn = True, FullscreenBtn = True, MenuBtn = True ;Set variables for the handles of the GUI-Control buttons. (Above function always returns an array this size and in this order, no matter which buttons are selected.) $GUI_CLOSE_BUTTON = $Control_Buttons[0] $GUI_MAXIMIZE_BUTTON = $Control_Buttons[1] $GUI_RESTORE_BUTTON = $Control_Buttons[2] $GUI_MINIMIZE_BUTTON = $Control_Buttons[3] $GUI_FULLSCREEN_BUTTON = $Control_Buttons[4] $GUI_FSRestore_BUTTON = $Control_Buttons[5] $GUI_MENU_BUTTON = $Control_Buttons[6] ;====================================================================================================================================================================== ;Create Buttons Global $hImage_Btn1 = _GDIPlus_BitmapCreateFromMemory(_Button1()) $Button1 = _Metro_CreateButtonFromImage($hImage_Btn1, 37, 235) Global $hImage_Icon1 = _GDIPlus_BitmapCreateFromMemory(_Icon1()) $Button2 = _Metro_CreateButtonWithIcon("Excel", $hImage_Icon1, 190, 245, 130, 35) $Button3 = _Metro_CreateButtonEx2("Button Style 3", 340, 245, 115, 35) ;Create Checkboxes $Checkbox1 = _Metro_CreateCheckbox("Checkbox 1", 30, 70, 125, 30) $Checkbox2 = _Metro_CreateCheckboxEx("Checkbox 2", 30, 107, 125, 30) $Checkbox3 = _Metro_CreateCheckboxEx2("Checkbox 3", 29, 142, 125, 30) ;Set status to checked _Metro_CheckboxCheck($Checkbox1, True) _Metro_CheckboxCheck($Checkbox2, True) _Metro_CheckboxCheck($Checkbox3, True) ;Create 3 Radios that are assigned to Radio Group 1 $Radio1 = _Metro_CreateRadio("1", "Radio 1", 180, 70, 100, 30) $Radio2 = _Metro_CreateRadio("1", "Radio 2", 180, 110, 100, 30) $Radio3 = _Metro_CreateRadioEx("1", "Radio 3", 180, 150, 100, 30) ;Style with colored checkmark _Metro_RadioCheck("1", $Radio1) ;check $Radio1 which is assigned to radio group "1" and uncheck any other radio in group "1" ;Create Toggles $Toggle1 = _Metro_CreateToggle("Toggle 1", 320, 70, 130, 30) $Toggle2 = _Metro_CreateToggleEx("Toggle 2", 322, 107, 128, 30) $Toggle3 = _Metro_CreateOnOffToggle("Enabled", "Disabled", 320, 144, 130, 30) ; Creates a toggle with different texts for on/off. Alternatively you can use _Metro_CreateOnOffToggleEx for the secondary toggle style. ;Create Progressbar $Progress1 = _Metro_CreateProgress(100, 195, 300, 26) ;Set resizing options for the controls so they don't change in size or position. This can be customized to match your gui perfectly for resizing. See AutoIt Help file. GUICtrlSetResizing($Button1, 768 + 8) GUICtrlSetResizing($Button2, 768 + 8) GUICtrlSetResizing($Button3, 768 + 8) GUICtrlSetResizing($Checkbox1, 768 + 2 + 32) GUICtrlSetResizing($Checkbox2, 768 + 2 + 32) GUICtrlSetResizing($Checkbox3, 768 + 2 + 32) GUICtrlSetResizing($Radio1, 768 + 2 + 32) GUICtrlSetResizing($Radio2, 768 + 2 + 32) GUICtrlSetResizing($Radio3, 768 + 2 + 32) GUICtrlSetResizing($Toggle1, 768 + 2 + 32) GUICtrlSetResizing($Toggle2, 768 + 2 + 32) GUICtrlSetResizing($Toggle3, 768 + 2 + 32) GUICtrlSetResizing($Progress1[0], 768 + 2 + 32) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE, $GUI_CLOSE_BUTTON _GDIPlus_ImageDispose($hImage_Btn1) _GDIPlus_ImageDispose($hImage_Icon1) _Metro_GUIDelete($Form1) ;Delete GUI/release resources, make sure you use this when working with multiple GUIs! Exit Case $GUI_MAXIMIZE_BUTTON GUISetState(@SW_MAXIMIZE, $Form1) Case $GUI_MINIMIZE_BUTTON GUISetState(@SW_MINIMIZE, $Form1) Case $GUI_RESTORE_BUTTON GUISetState(@SW_RESTORE, $Form1) Case $GUI_FULLSCREEN_BUTTON, $GUI_FSRestore_BUTTON ConsoleWrite("Fullscreen toggled" & @CRLF) ;Fullscreen toggle is processed automatically when $ControlBtnsAutoMode is set to true, otherwise you need to use here _Metro_FullscreenToggle($Form1) Case $GUI_MENU_BUTTON ;Create an Array containing menu button names Local $MenuButtonsArray[5] = ["Themes Demo", "Settings", "About", "Contact", "Exit"] ; Open the metro Menu. See decleration of $MenuButtonsArray above. Local $MenuSelect = _Metro_MenuStart($Form1, 150, $MenuButtonsArray) Switch $MenuSelect ;Above function returns the index number of the selected button from the provided buttons array. Case "0" ConsoleWrite("Returned 0 = Starting themes demo. Please note that the window border colors are not updated during this demo." & @CRLF) _ThemesDemo() Case "1" ConsoleWrite("Returned 1 = Settings button clicked." & @CRLF) Case "2" ConsoleWrite("Returned 2 = About button clicked." & @CRLF) Case "3" ConsoleWrite("Returned 3 = Contact button clicked." & @CRLF) Case "4" ConsoleWrite("Returned 4 = Exit button clicked." & @CRLF) _Metro_GUIDelete($Form1) Exit EndSwitch Case $Button3 _GUIDisable($Form1, 0, 30) ;For better visibility of the MsgBox on top of the first GUI. _Metro_MsgBox(0, "Metro MsgBox Example", "Try a rightclick on this button for rightclick menu demo.", 400, 11, $Form1) ; with 3 secs timeout _GUIDisable($Form1) Case $GUI_EVENT_SECONDARYDOWN ;Demo for starting rightclick menu Local $aCInfo = GUIGetCursorInfo($Form1) If $aCInfo[4] = $Button3 Then ;Create an Array containing menu button names Local $MenuButtonsArray[4] = ["Button 1", "Button 2", "Button 3", "Button 4"] ; Open the rightclick Menu. See decleration of $MenuButtonsArray above. Local $MenuSelect = _Metro_RightClickMenu($Form1, 300, $MenuButtonsArray) Switch $MenuSelect ;Above function returns the index number of the selected button from the provided buttons array. Case "0" ConsoleWrite("Returned 0 = Button 1 clicked." & @CRLF) Case "1" ConsoleWrite("Returned 1 = Button 2 clicked." & @CRLF) Case "2" ConsoleWrite("Returned 2 = Button 3 clicked." & @CRLF) Case "3" ConsoleWrite("Returned 3 = Button 4 clicked." & @CRLF) EndSwitch EndIf Case $Button2 _GUIDisable($Form1, 0, 30) ;For better visibility of the MsgBox on top of the first GUI. _Metro_MsgBox(0, "Metro MsgBox Example", "Button 2 clicked. (Button with 3 secs timeout)", 400, 11, $Form1, 3) ; with 3 secs timeout _GUIDisable($Form1) Case $Button1 _GUIDisable($Form1, 0, 30) Local $mInput = _Metro_InputBox("Please enter your name.", 11, "", False, True) If Not @error Then _Metro_MsgBox(0, "Metro MsgBox Example", "Hello " & $mInput & ", Press ok to set the progressbar.", 350, 11, $Form1) _GUIDisable($Form1) For $i = 0 To 85 Step +2 Sleep(1) _Metro_SetProgress($Progress1, $i) Next _GUIDisable($Form1, 0, 30) Local $Select_YesNo = _Metro_MsgBox(4, "Metro MsgBox Example", "Select yes to create a second GUI.", 350, 11, $Form1) If $Select_YesNo = "Yes" Then _SecondGUI() _GUIDisable($Form1) Case $Toggle1 If _Metro_ToggleIsChecked($Toggle1) Then _Metro_ToggleUnCheck($Toggle1) ConsoleWrite("Toggle unchecked!" & @CRLF) Else _Metro_ToggleCheck($Toggle1) ConsoleWrite("Toggle checked!" & @CRLF) EndIf Case $Toggle2 If _Metro_ToggleIsChecked($Toggle2) Then _Metro_ToggleUnCheck($Toggle2) ConsoleWrite("Toggle unchecked!" & @CRLF) Else _Metro_ToggleCheck($Toggle2) ConsoleWrite("Toggle checked!" & @CRLF) EndIf Case $Toggle3 If _Metro_ToggleIsChecked($Toggle3) Then _Metro_ToggleUnCheck($Toggle3) ConsoleWrite("Disabled!" & @CRLF) Else _Metro_ToggleCheck($Toggle3) ConsoleWrite("Enabled!" & @CRLF) EndIf Case $Checkbox1 If _Metro_CheckboxIsChecked($Checkbox1) Then _Metro_CheckboxUnCheck($Checkbox1) ConsoleWrite("Checkbox unchecked!" & @CRLF) Else _Metro_CheckboxCheck($Checkbox1) ConsoleWrite("Checkbox checked!" & @CRLF) EndIf Case $Checkbox2 If _Metro_CheckboxIsChecked($Checkbox2) Then _Metro_CheckboxUnCheck($Checkbox2) ConsoleWrite("Checkbox unchecked!" & @CRLF) Else _Metro_CheckboxCheck($Checkbox2) ConsoleWrite("Checkbox checked!" & @CRLF) EndIf Case $Checkbox3 If _Metro_CheckboxIsChecked($Checkbox3) Then _Metro_CheckboxUnCheck($Checkbox3) ConsoleWrite("Checkbox unchecked!" & @CRLF) Else _Metro_CheckboxCheck($Checkbox3) ConsoleWrite("Checkbox checked!" & @CRLF) EndIf Case $Radio1 _Metro_RadioCheck(1, $Radio1) ConsoleWrite("Radio 1 selected!" & @CRLF) Case $Radio2 _Metro_RadioCheck(1, $Radio2) ConsoleWrite("Radio 2 selected = " & _Metro_RadioIsChecked(1, $Radio2) & @CRLF) Case $Radio3 _Metro_RadioCheck(1, $Radio3) ConsoleWrite("Radio 3 (ExStyle) selected!" & @CRLF) EndSwitch WEnd Func _SecondGUI() Local $Form2 = _Metro_CreateGUI("Example2", 600, 400, -1, -1, True) ;Add control buttons Local $Control_Buttons_2 = _Metro_AddControlButtons(True, True, True, True) Local $GUI_CLOSE_BUTTON = $Control_Buttons_2[0] Local $GUI_MAXIMIZE_BUTTON = $Control_Buttons_2[1] Local $GUI_RESTORE_BUTTON = $Control_Buttons_2[2] Local $GUI_MINIMIZE_BUTTON = $Control_Buttons_2[3] Local $Button1 = _Metro_CreateButton("Close", 250, 340, 100, 40) GUICtrlSetResizing($Button1, 768 + 8) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE, $Button1, $GUI_CLOSE_BUTTON _Metro_GUIDelete($Form2) ;Delete GUI/release resources, make sure you use this when working with multiple GUIs! Return 0 Case $GUI_MAXIMIZE_BUTTON GUISetState(@SW_MAXIMIZE, $Form2) Case $GUI_MINIMIZE_BUTTON GUISetState(@SW_MINIMIZE, $Form2) Case $GUI_RESTORE_BUTTON GUISetState(@SW_RESTORE, $Form2) EndSwitch WEnd EndFunc ;==>_SecondGUI Func _ThemesDemo() ;Loop through all themes by recreating all controls Local $ThemesArray[25] = ["DarkMidnightTeal", "DarkMidnightBlue", "DarkMidnightCyan", "DarkMidnight", "DarkTeal", "DarkBlueV2", "DarkBlue", "DarkCyan", "DarkRuby", "DarkGray", "DarkGreen", "DarkGreenV2", "DarkPurple", "DarkAmber", "DarkOrange", "LightTeal", "LightGray", "LightBlue", "LightCyan", "LightGreen", "LightRed", "LightOrange", "LightPurple", "LightPink", "DarkTealV2"] For $i = 0 To 24 GUISetState($Form1, @SW_LOCK) ConsoleWrite($ThemesArray[$i] & @CRLF) _SetTheme($ThemesArray[$i]) ;See MetroThemes.au3 for selectable themes or to add more GUICtrlDelete($Button1) GUICtrlDelete($Button2) GUICtrlDelete($Button3) GUICtrlDelete($Checkbox1) GUICtrlDelete($Checkbox2) GUICtrlDelete($Checkbox3) GUICtrlDelete($Radio1) GUICtrlDelete($Radio2) GUICtrlDelete($Radio3) GUICtrlDelete($Toggle1) GUICtrlDelete($Toggle2) GUICtrlDelete($Toggle3) GUICtrlDelete($Progress1[0]) GUICtrlDelete($GUI_CLOSE_BUTTON) GUICtrlDelete($GUI_MAXIMIZE_BUTTON) GUICtrlDelete($GUI_RESTORE_BUTTON) GUICtrlDelete($GUI_MINIMIZE_BUTTON) GUICtrlDelete($GUI_FULLSCREEN_BUTTON) GUICtrlDelete($GUI_FSRestore_BUTTON) GUICtrlDelete($GUI_MENU_BUTTON) GUISetBkColor($GUIThemeColor, $Form1) $Control_Buttons = _Metro_AddControlButtons(True, True, True, True, True) $GUI_CLOSE_BUTTON = $Control_Buttons[0] $GUI_MAXIMIZE_BUTTON = $Control_Buttons[1] $GUI_RESTORE_BUTTON = $Control_Buttons[2] $GUI_MINIMIZE_BUTTON = $Control_Buttons[3] $GUI_FULLSCREEN_BUTTON = $Control_Buttons[4] $GUI_FSRestore_BUTTON = $Control_Buttons[5] $GUI_MENU_BUTTON = $Control_Buttons[6] $Button1 = _Metro_CreateButton("Button Style 1", 50, 245, 115, 40) $Button2 = _Metro_CreateButtonEx("Button Style 2", 195, 245, 115, 40) $Button3 = _Metro_CreateButtonEx2("Button Style 3", 340, 245, 115, 40) $Checkbox1 = _Metro_CreateCheckbox("Checkbox 1", 30, 70, 125, 30) $Checkbox2 = _Metro_CreateCheckboxEx("Checkbox 2", 30, 107, 125, 30) $Checkbox3 = _Metro_CreateCheckboxEx2("Checkbox 3", 29, 142, 125, 30) _Metro_CheckboxCheck($Checkbox1, True) _Metro_CheckboxCheck($Checkbox2, True) _Metro_CheckboxCheck($Checkbox3, True) $Radio1 = _Metro_CreateRadio("1", "Radio 1", 180, 70, 100, 30) $Radio2 = _Metro_CreateRadio("1", "Radio 2", 180, 110, 100, 30) $Radio3 = _Metro_CreateRadioEx("1", "Radio 3", 180, 150, 100, 30) _Metro_RadioCheck("1", $Radio1) $Toggle1 = _Metro_CreateToggle("Toggle 1", 320, 70, 130, 30) $Toggle2 = _Metro_CreateToggleEx("Toggle 2", 322, 107, 128, 30) $Toggle3 = _Metro_CreateOnOffToggle("Enabled", "Disabled", 320, 144, 130, 30) $Progress1 = _Metro_CreateProgress(100, 195, 300, 26) GUICtrlSetResizing($Button1, 768 + 8) GUICtrlSetResizing($Button2, 768 + 8) GUICtrlSetResizing($Button3, 768 + 8) GUICtrlSetResizing($Checkbox1, 768 + 2 + 32) GUICtrlSetResizing($Checkbox2, 768 + 2 + 32) GUICtrlSetResizing($Checkbox3, 768 + 2 + 32) GUICtrlSetResizing($Radio1, 768 + 2 + 32) GUICtrlSetResizing($Radio2, 768 + 2 + 32) GUICtrlSetResizing($Radio3, 768 + 2 + 32) GUICtrlSetResizing($Toggle1, 768 + 2 + 32) GUICtrlSetResizing($Toggle2, 768 + 2 + 32) GUICtrlSetResizing($Toggle3, 768 + 2 + 32) GUICtrlSetResizing($Progress1[0], 768 + 2 + 32) GUISetState($Form1, @SW_UNLOCK) Sleep(1500) Next EndFunc ;==>_ThemesDemo Func _Metro_CreateButtonFromImage($hImage, $Left, $Top, $BG_Color = $ButtonBKColor, $FrameColor = "0xFFFFFF", $DisableColor = 0x40000000) Local $Button_Array[16] Local $aDim = _GDIPlus_ImageGetDimension($hImage) If @error Then Return 0 Local $Width = $aDim[0] Local $Height = $aDim[1] ;HighDPI Support Local $btnDPI = _HighDPICheck() If $HIGHDPI_SUPPORT Then $Left = Round($Left * $gDPI) $Top = Round($Top * $gDPI) $Width = Round($aDim[0] * $gDPI) $Height = Round($aDim[1] * $gDPI) EndIf $Button_Array[1] = False ; Set hover OFF $Button_Array[3] = "2" ; Type $Button_Array[15] = GetCurrentGUI() ;Calculate Framesize Local $FrameSize = Round(4 * $btnDPI) If Not (Mod($FrameSize, 2) = 0) Then $FrameSize = $FrameSize - 1 ;Set Colors $BG_Color = "0xFF" & Hex($BG_Color, 6) $FrameColor = "0xFF" & Hex($FrameColor, 6) Local $Pen_BTN_FrameHoverColor = _GDIPlus_PenCreate($FrameColor, $FrameSize) Local $hBrush_Btn_Disable = _GDIPlus_BrushCreateSolid($DisableColor) ;Create Button graphics Local $Button_Graphic1 = _iGraphicCreate($Width, $Height, $BG_Color) ;Default _GDIPlus_GraphicsDrawImageRect($Button_Graphic1[0], $hImage, 0, 0, $Width, $Height) Local $Button_Graphic2 = _iGraphicCreate($Width, $Height, $BG_Color, 0, 5) ;Hover _GDIPlus_GraphicsDrawImageRect($Button_Graphic2[0], $hImage, 0, 0, $Width, $Height) Local $Button_Graphic3 = _iGraphicCreate($Width, $Height, $BG_Color, 0, 5) ;Disabled _GDIPlus_GraphicsDrawImageRect($Button_Graphic3[0], $hImage, 0, 0, $Width, $Height) _GDIPlus_GraphicsFillRect($Button_Graphic3, 0, 0, $Width, $Height, $hBrush_Btn_Disable) ;Add frame _GDIPlus_GraphicsDrawRect($Button_Graphic2[0], 0, 0, $Width, $Height, $Pen_BTN_FrameHoverColor) ;Release created objects _GDIPlus_PenDispose($Pen_BTN_FrameHoverColor) _GDIPlus_BrushDispose($hBrush_Btn_Disable) ;Set graphic and return Bitmap handle $Button_Array[0] = GUICtrlCreatePic("", $Left, $Top, $Width, $Height) $Button_Array[5] = _iGraphicCreateBitmapHandle($Button_Array[0], $Button_Graphic1) $Button_Array[6] = _iGraphicCreateBitmapHandle($Button_Array[0], $Button_Graphic2, False) $Button_Array[7] = _iGraphicCreateBitmapHandle($Button_Array[0], $Button_Graphic3, False) ;For GUI Resizing GUICtrlSetResizing($Button_Array[0], 768) _cHvr_Register($Button_Array[0], "_iHoverOff", "_iHoverOn", "", "", _iAddHover($Button_Array)) Return $Button_Array[0] EndFunc ;==>_Metro_CreateButtonFromImage Func _Metro_CreateButtonWithIcon($Text, $hImage, $Left, $Top, $Width, $Height, $BG_Color = $ButtonBKColor, $Font_Color = $ButtonTextColor, $Font = "Arial", $Fontsize = 10, $FontStyle = 1, $FrameColor = "0xFFFFFF", $DisableColor = 0x40000000) Local $Button_Array[16] Local $btnDPI = _HighDPICheck() ;HighDPI Support If $HIGHDPI_SUPPORT Then $Left = Round($Left * $gDPI) $Top = Round($Top * $gDPI) $Width = Round($Width * $gDPI) $Height = Round($Height * $gDPI) Else $Fontsize = ($Fontsize / $Font_DPI_Ratio) EndIf $Button_Array[1] = False ; Set hover OFF $Button_Array[3] = "2" ; Type $Button_Array[15] = GetCurrentGUI() ;Calculate Framesize Local $FrameSize = Round(4 * $btnDPI) If Not (Mod($FrameSize, 2) = 0) Then $FrameSize = $FrameSize - 1 ;Set Colors $BG_Color = "0xFF" & Hex($BG_Color, 6) $Font_Color = "0xFF" & Hex($Font_Color, 6) $FrameColor = "0xFF" & Hex($FrameColor, 6) Local $Brush_BTN_FontColor = _GDIPlus_BrushCreateSolid($Font_Color) Local $Brush_BTN_FontColorDis = _GDIPlus_BrushCreateSolid(StringReplace(_AlterBrightness($Font_Color, -30), "0x", "0xFF")) Local $Pen_BTN_FrameHoverColor = _GDIPlus_PenCreate($FrameColor, $FrameSize) Local $hBrush_Btn_Disable = _GDIPlus_BrushCreateSolid($DisableColor) Local $aDim = _GDIPlus_ImageGetDimension($hImage) Local $minBtn = $Width < $Height ? $Width : $Height Local $maxImg = $aDim[0] < $aDim ? $aDim[0] : $aDim[1] Local $fFactor = 1 If $maxImg > $minBtn Then $fFactor = ($minBtn / $maxImg) * 0.8 Local $hImage_Icon = _GDIPlus_ImageScale($hImage, $fFactor, $fFactor) Local $aDim2 = _GDIPlus_ImageGetDimension($hImage_Icon) Local $hGfx = _GDIPlus_ImageGetGraphicsContext($hImage_Icon) ;Create Button graphics Local $Button_Graphic1 = _iGraphicCreate($Width, $Height, $BG_Color, 0, 5) ;Default _GDIPlus_GraphicsDrawImageRect($Button_Graphic1[0], $hImage_Icon, $Width * 0.05, ($Height - $aDim2[1]) / 2, $aDim2[0], $aDim2[1]) Local $Button_Graphic2 = _iGraphicCreate($Width, $Height, $BG_Color, 0, 5) ;Hover _GDIPlus_GraphicsDrawImageRect($Button_Graphic2[0], $hImage_Icon, $Width * 0.05, ($Height - $aDim2[1]) / 2, $aDim2[0], $aDim2[1]) Local $Button_Graphic3 = _iGraphicCreate($Width, $Height, $BG_Color, 0, 5) ;Disabled _GDIPlus_GraphicsDrawImageRect($Button_Graphic3[0], $hImage_Icon, $Width * 0.05, ($Height - $aDim2[1]) / 2, $aDim2[0], $aDim2[1]) _GDIPlus_GraphicsFillRect($Button_Graphic3, 0, 0, $Width, $Height, $hBrush_Btn_Disable) ;Create font, Set font options Local $hFormat = _GDIPlus_StringFormatCreate(), $hFamily = _GDIPlus_FontFamilyCreate($Font), $hFont = _GDIPlus_FontCreate($hFamily, $Fontsize, $FontStyle) Local $tLayout = _GDIPlus_RectFCreate(0, 0, $Width, $Height) _GDIPlus_StringFormatSetAlign($hFormat, 1) _GDIPlus_StringFormatSetLineAlign($hFormat, 1) ;Draw button text _GDIPlus_GraphicsDrawStringEx($Button_Graphic1[0], $Text, $hFont, $tLayout, $hFormat, $Brush_BTN_FontColor) _GDIPlus_GraphicsDrawStringEx($Button_Graphic2[0], $Text, $hFont, $tLayout, $hFormat, $Brush_BTN_FontColor) _GDIPlus_GraphicsDrawStringEx($Button_Graphic3[0], $Text, $hFont, $tLayout, $hFormat, $Brush_BTN_FontColorDis) ;Add frame _GDIPlus_GraphicsDrawRect($Button_Graphic2[0], 0, 0, $Width, $Height, $Pen_BTN_FrameHoverColor) ;Release created objects _GDIPlus_BrushDispose($hBrush_Btn_Disable) _GDIPlus_ImageDispose($hImage_Icon) _GDIPlus_FontDispose($hFont) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_BrushDispose($Brush_BTN_FontColor) _GDIPlus_BrushDispose($Brush_BTN_FontColorDis) _GDIPlus_PenDispose($Pen_BTN_FrameHoverColor) ;Set graphic and return Bitmap handle $Button_Array[0] = GUICtrlCreatePic("", $Left, $Top, $Width, $Height) $Button_Array[5] = _iGraphicCreateBitmapHandle($Button_Array[0], $Button_Graphic1) $Button_Array[6] = _iGraphicCreateBitmapHandle($Button_Array[0], $Button_Graphic2, False) $Button_Array[7] = _iGraphicCreateBitmapHandle($Button_Array[0], $Button_Graphic3, False) ;For GUI Resizing GUICtrlSetResizing($Button_Array[0], 768) _cHvr_Register($Button_Array[0], "_iHoverOff", "_iHoverOn", "", "", _iAddHover($Button_Array)) Return $Button_Array[0] EndFunc ;==>_Metro_CreateButtonWithIcon ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2018-02-02 Func _Button1($bSaveBinary = False, $sSavePath = @ScriptDir) Local $Button1 $Button1 &= 'iVBORw0KGgoAAAANSUhEUgAAAIIAAAA0CAIAAADJ8nfCAAAe50lEQVR4Xu18B5RURf7uV3VTh+nJiSGPoEQFFVBRUXAVMAYU0dUnu2vAHHbNKLpiWBb+KooKIrorLqioKCBJRQQRRGCIwwyTA5On8+2bql5v9X/6DMJyWHff+s5ZPurcU0NV161bX/1i3W4CTMMvjeOQ8QuA48gg+G+FBJz3HyZAokSWFc5pYgKEyJKUbP0vZeI/qZQ4QCRZdmwbaBB/KoAjJNILpBFicM6PXSyO08A7j0DIkXrwQ/p07HQK1AJs3PiTLxiTe9FFfYuLyz//fN9nn1W2txOgl+hjH5eGYyKAEFAqAZLj2IAjGpi40k7DygAkiTPGOlHSOHJk7zVf/tqtFeAQNP7x2XefnPo1MBTwHp2J4zRwQoiiyKZJAD8QFCyaQMzlcrndNC3NaG+jgaAMMNGUAqiAD1AJ4ZxXTpzYf9Gi+wDYFogMiQgCGSgFYCz6YM6kiZ8BZxOics6O03BktU4IOJeBxnjxevteeWXq5MnDRo8+H0dAdE/ppvmvb1uxonH//hZBhuRyeXR9JoDa+oZuBfm33HLrrl17NE3JyMj49NNPmpsDGWnsiScfefHFEuBiQnTOHYAcd1g7ayHCebxEgLILLhj26KOTRo8+Ex2wHMs2bcdhRECWJUnSBvYdM2tWvESLir6bO3fTnDnla9c+CKC+vlEiHMBbb82bOHHS+eef+9RT0wA4js6RM+nX18x/58GWxkpKezpO5HjckOSAUEoZs4GazOyUrVv/1LtnIQCHO+1toRSvy6WqiiQrbgVJgAGUOZZh8nDYPuWU8197bdTMmQGXK9uyDMCRZQXAq6++eueddx44cGDBgncSJj0UCfYsGHzGWb5ln+xgrDBp2P/LaeCJDoy1A63PPHPp1KlXAdB1wx8MdsnNSXWRyvL9X23YvG7t2q3FtW1RnTpc0+SuaergU8+4ePSIM84YXlDQ3bZJ' $Button1 &= 'Y2OrLCMYbDGMKOdgjNXX18c52LJly4gRIxYuXAjAjveLGR6Pr3fvAqCI8yghEuf2f7k0JLahBLQDLXv2PjKgfz8ABw825uVle2Vn/oL5y1d/U1ZWIfmy+vY54eKrzsrKyuBEgcNC4fbasv1PvrJInT1/+MATJk24bNSYsYZht7Q0EUIpJQA8Hk9ra+vw4cNvuunmlStXXn/99XEapL+DyLIXaAO4mJsNHG4hOED/vwkveMIfOercfj4NhBDKeRvgN43Ziurz+wOOY+Vkpnz2yccvz1sUs+wTTx4y+aIrCnr2cmkuB5JMKSNU2HFHGXNhIKo31FQUbd/66POvFb71l3vvu2vYiJGNjY16LCZLUrrARx8teeGF54YNG9ZxSykQbKusPgjIBJRzR5IUQtQjBSWO4+i/LBNJqynLKZyTTnOzHMcQVfIv0sApJYxFgEAw/Kc4BzW1dWk+r2lbd989dfOe0rNGjz/t5P4peT0lxzKpFrJlbpucOBScMUIoZcwknPfo3rNH75MuGDN2wzdfTnno2d9cfeFtt93mD0mhcBhAIBCYMePPmluLxQwAsiwpilJVUbJt0wGgF4gOnu84rUAIoDgEDFCBHMCfkJWfFXsyHAL6T47DRX+Vc5dlNQBSp7lpQCoQAdjR73J0h5ULv4gDdd9uuPPskUOqq+pSU92xcOimu36vc3VC3FHN66loCiUyp5osgUMGAZdkysEch1AKM+JQFUZYd2yZOT7VqalvXjhv9phRI6Y98WgwFNE09ZNPlsaiOqM8My3z0ssuibMiEXnu2y8++cRs4CLgEmCz1/uVbXPD0DtzIEmayyVFIsOBcwD/P2nGE51lQtyHapIY54ZoIsc8jiJWf0lWVnNra1gQyWTZ5fVmBAKjgN5AlBDvMd5FPlzQOFeA8ptvHhLnoKnpoKJRPey/5f6pUYPf/JsbuCeXUQ/AHUnjkgewJMIVLUVSVALuEOrEIiYIHIdpqbJjWYbeFA6n5/ec' $Button1 &= 'fOddz720IF197u4HHgpFjGsnXuNxewCYphkIBCmlK9csnTNnAdAT6AsAWFRZuTg7+1JAB7SOFbREvZ6QrsBASfI6ThiQji1C4qKSAoQ533loMrEbkAmEOyt6ASfZ7VCJYYS4OC8eP75x+fJqwOywZGpd3Ypu3S4GFgH7ON8FcFEkwBKPlp3cOkehAZIkOU4AUBcsuAuctbaE8rM9dz3xx00lrQ/ff7vizbGpRmUJsgaZcjMGzeNKTQkH/OGaMmoF4euSlZsvEYWZUcKJ4zCiuFVCQ+Fgii/vphtueOG12Zk5Wdf/+rdVlVW2bVEquVyabcY+X/7hyy+/3lCvAacpcg/LrgJ8ggMAbiQBDQBjWaqqmWYdMFhoLRuwDlv0RDDvdF5TQtI4b/J6PxwzJqWhwRQdaE6Oe+/e9RUVFxFyojCHcofhZXGaCfEIE2DbdkhIjCQ6QFSippkv6mryunFjrai3ezyvnn9+fnMzI8Q2DNa7d87Gjauamq4jpBfn7YB8NBocB0D7okXjARTt2luQn/XBR4s/27B/4sSrunXr1W4qqiRxqnBQx6aK6qaqd8+mrzKthtMGn5SZ2bWkvKR46z5f78HutGwrpjMigdIYZGg8Gmsf2KdL4dBRL727cvjpw/O6940rIkr5D1s3vzJnzg8bN9lOL+BUYBCHArR36aJCwDAMWZYBJAPJoqIin4+0tjYAwwFKSC6lXQAlKdOMhThvIiSV0qykrHAeH8dlmvMnTOj/zjvL0QmzZt324IMrVfVcw2jpSBnkcJ7hOBXAdsFlCtCfkC5ALefBDsEiuh5MzFBRFEppVVX1unVfCZ62Xn/9ufPmfYxOeOihC2fM2KJpp8di7UdRSgmrEAOUiROvaG1tTvWlNNRUv/KX5V0HnDVg0KlB28UJt4gLTFLACBzVl7F17Yc9XOHb77krIWN9Bg7oUbR78arVXU+/0puSYof9YJAkmTA5SDJgxc45rd/CspI33npn2pNTVVUy' $Button1 &= 'YsaGbzdsWv8dMBYYKDa+TakMNPTo4YWApmmO41BKEzQwxgoLBwwcmLN+fZkkuR3Hw/kqx/kch8AFPMH5fMfZg04wzYsB7/bt1QAsiwFMUWQAixdvAioNwxLLDSCD86XASoAOGjRAkqjfr1dVvcE5gN8Cw4RLzQAkZiXLcqISv/p8KYAPkLdtqxPbmgPMtpmmKe+//zXgjcUY4AHMzqqJ/kQjAYEXZ50HoKqqzufRPly6rD7ETx10guNOMwzdhmRxajuWbjvEnVZeWY320ptvm2IBLYFwIBz1R/QBpwwa2r/P+k/fDpvUghqxeQyIMg2chWyiqWq33ieu31WzbfuPPo+HUHXA4N5AHjBE7DU34FDqBhr7988AEIvFAITD4ebmZkJI4lHdbk9OTi7QIEk+YN/ZZzdwbnAe5TzEeQvn/PXXJwNPvPvulHhd/GeE82C8lpq6HPhgwoRxABSFyjIVzgiuvvqGPn1yUtNuAWJiMlNHjCg2jHLOnV27du3YUVRZWcI5b2zc0q/f58DtgCwI4x1ylqwwjydHBFsfXz1htFhSIkmSbZsAJk26q2dPlpn1LKAT4koQ+VMaCIFtS0DDTdcOsa0ApVJTQ+1nX23OLRzsuNP9MTAim0yyTMeyGSfeYMRYt3j2tVddoypSS1MbAWyHOY7T5Nd/NWZMJmv5evlCyZtp2Y5jOYwQmxKHam3MVZCd6qdZS1etZ45BqTRi2IjBA/OAekoTFpibpgG0DR48HB1aGcCyZcsgwBg3DL2wcCgQMM0I4BhGwoV1i6XJAvDDDwEAqtqlwyZ7xA5FMIjJk6+fOvVZCBAR6Ah18XBpadOFl4wCyoGXH3vsV99/X6GqvXEocnOH7dvXOGfOA8BDnKcDNMlEUhu6vZkAZrx4+2OPPo8OeL1eADNm/E9lZfCSS08A1lPqA3A4DVySCBDp0qt3ftf0ktKDaem+XUU7yprNwm75Jk1piTKLaIbNwqYd1B3Hm7p8wXNjh/Ud' $Button1 &= 'MWxIc0O7A9lkMBwSizmOaUSY8pspD4Z2rd5TWil5c0IxI2w6UUu1LTtscurNzOpSsHV3RUvDQUq525U1dEQPYL3jgBApXhizALtfv35izyoJb6qlpRkClBKXy9WjRy+AiyDOFY3qCXoYY7ZtlZaWb9v2PYB4oJ5Q3ABaWlriFkV0U3+yhU3L3LeveOWqFTu3lAEfnnmmZ/r09yGg6/rq1atXrVrV1tYmNIwDYMqUmYMH5wKfiNiF4VAeAFl8kImrjg5Ylrl79+6Ff/tgy/fbAZMxHJEGUKoBrVdcciKQ3trq1yj7cuM26smSvemyqobCwfYYoiaLWbY3p9umDRszqf7bW6fU+3UmSW1hvexAZV19S9iGYTlRf2vPwl6XX3nl5y/d09jSzqgnols2Ic0RbjqEulM9Lld5s76/eJ+qKTJRBw4cJGbSLq4SYALt/fsPSUiDZVmGYXz55dd79yYVPevf/1RRaQHUDmVFKKUirJU9Ho9QCP+ruMVVsSwbwObN3wF251PCHdt3PPrwI9OefgAEgPH447cL4i0A+/fvnzt37tixY9es+bLzQeMLL0wDPgBcP/GVqSxHQi0Atm6vBXRNc6EDRUU7H3vsidkvPRkItABpgHVkGkyTAXavbm5A55y3NTdt31+TlpbK3NlgFnNQ0xozbYO40rdv3/bDX6dOfexhproiET0c1vfu2jX37bdnzni+oabK5ER3WHvAf/k1159/UtaqJW/w1AJKeCBqNUWoShlxTM3lg+Ze98MuI9Rugfbs2l3TdKCJEI0QCdCBtt69RyRtcpyGysoqIdoJgZC6du0GQPSUOmsGKtCxxIkrT0iVYYQAFBfXDhmSSJ+QxPjhsP/Lr9du3rS/pKQH0C2e6UpSSAiTaYoYxEwIpdjX4DwVkIEKQlLQCYRIwgsiny1dP3ToCEpJkm7bZitWLN28Zf/BgxcBQzmPAvSnNAiaGSD3LtSC4bCmyWU1ByvbLI8vnTKTQ7FoGuC0' $Button1 &= 'Rrgla6vnPvvQ7Ted2P+EhoPNNkd5ZdnaNau/XffNJ1+sXbtqGWzm2Dwa0U3TnvLo9OYfl3+3/L2ImheImI5lmcRrccqJ6vOm7Ni1rz0Y8qhEdWXm5jqAnzEupuR0nhtjzDTN0pLy8vKKjv9xsrMLsnIAVAAqOoFzHBHizCox7Ojs7LzOJPl8OYV9MoFRwM1Aa05O/6QLpKlqXtc8YWYUdCAajXAuZ2T4hD1T8dNz+YS7NS4nJ69TGMDS0tK7diXARbJ8o5izc2RpSCQ1c3Joc3PYpdDamvpIKOT2+hzGojFKOLMMw53d629vzPjV0Pxb75xSUd2ialJ1Rfk3G7d8vWpZSteTxtwzd+ZLr2za/K2mqbZt+/1tPXv2nj7t6a9n3dHY2KC4UsAYoxoljgRGJGV/MwtHDce2JUI58wAGIQ4hMhBRlISA2uJqGqbJYVZVVUFAliXOeN8TegLVgPRPpoMigNNZKUkSUWUAfiBGKYdAh6KTKKWHMcp13Q6Hw2IoiiPABMI/UX2yrInBbSAGOEemQXDPACU93R2LGrIig3KHOxIhjsNAGDONeCpp8xdLoj+8/z8vz65tDXMg5A9t37nvixWfhyza75K7B40cPfjqPzw/fbrub3K5vLbNW1vbxl5y8YTrrlwx90kpJVt1u009bHIXl2VZkkIhv23FHIcRqri9FAiI4w0NKBszZnDigRM2NpLIBvr9ABIxhKqpw4cPA5oA+5+kgR75PRKxNIw56AQu/h1GA3EcR5Lko+yAw5q4KMlKAuQfzskybcOImrpNCCWgpAOq1xeM8e0fvjh39p9dGanRcDQcicaNxLbv1rU01Pe/7J703LyWqpKR1z4QyzvjlTfmx48fAB7Ro8Go+dyMl7Jbf1g998mUzAIJErENJxYGQKjMOGHgpmE43BBPbQAa0DBgwMlJzRCLxUr2FwPYvWdPggbRJBcU9AQOCBok/EugAANcHfmPYwHBvxVJ/Zsg0Nm7r1VSoFux' $Button1 &= 'FF+qLBM9HLZth1JI7vSPZ/zu97dNuOyaaxrqWhlDXXX1vuLioj0HDC4Hdq/d/Po9W96Ysv75y5ym4mWfL9u7d3c8niTgoUDAl5Y1a/abdd9/VFVenJJdAM4YiKmHe+WlSVSyLMO2DEvXAAWEc64Ce8899xwAySg6PSsTQG1tPTogy7KgygKMf5kG1sEEAPqLn75pQKC+vuyskUMb6oOF3fMz0tLagsFcO+rOzFv53qx+qH7m2RWVte0SRW31wX2lB37cvq2krPytt9688ZrxB5tbZcicO1SSdZvbwsuUFeXvAV1T89kXjn/g9smzXrz1kqnvcEmORnU92D7i1F6q5jJipj/UFgj6xQSomFLraaednpAGznnXOOoKANTVVSU9H8ZY167dOzlL/zpMgP3Ch6CcQ7zVmFpe7vJ67FAk1qdbwaDCLptKW1xaSu2BkvCuZYu+X2dTKIrS2tZUXn5g54/bvv2x+NZbfvPbieOjHGmpWSAJjwuKbUUNC4YJy6ayxDm3Y/r9T03fuHHjtwumnTvpXtuIxIzIeWed5lZJNGY3H6wPBqNABsSnAXTrdlpixRN6afjwEfF6UjgEQ/FKSkZGbnt7BaXef49SEpVfXBosIHXnfj0YaZFBwzF23vCB63Z+4W9t3bpi7gfvzhnYp8emfbURf3tdTc3Gzd8X7d590ejz35z1dATYu7eSEA7GKKFhy5YkCTHL5mbMIQCI7RBVSU9Le+DJZ+69657qom8jobDsWOcNG3KwNWAzlFaWAQRIOOOBzkEA/gE0TXW50vr1K9i0aRfnI/HzwQXB5B8pJY7DwQjhspz4CD/m2ySdaXIUGgjnDHBv+baseE99Wka3qvqGMSNPe/mvK378eknfDH5g795r/vp+6YEyj0umsnKwvt6A+9Q+GQv+uqiirJSCEE0TVp3HonooZpjBdn84GghGDT1kmoZp2JoiSR53rpfWfLfEyD7xnFP7ub2eaG2T48RK9pYDvYAcSmXH' $Button1 &= 'qfB4Ug5Ni5rt7e2GYXi93tTUVEVREgx5vb4TTui/adMOSlnnRXUcFr8mWTwqhAtNIbobwmPmh7lFPx3KtnlbW3w+ZiIRiWNDhytsisL/ofcmfDUKKGWlB91uGDHb4/NdNHKII3ujvv5/eGrm0pUbqgM40EarAyz3tLGjfvfsvibno7Wb6kJcV1KJK5V6MyG7LVdWxHE1xtRKXWnUrYqAfSColLTau6vDG3eUVzQbKV1OihysvPXGCfUNzYqi1B2s3LO3AsgRb3S7gOpBg05EJ8ST+C+//NLDDz8wf/4bzc1N6IDb7enbtyeAzhGcY5lZWZmq6hJxViyxkEfxbQihaWlpjsOAHGAA5wSwEvSIlJw7HmYKb81IkhGNRhsbqy2LAlmM2clbHEWKTDM+qxzLApAly30EfwTgR6CBcypJFpC/+MMdhuEHUFPX8JtrL5aNNt8JQy95fP71L305aeYnE/+8/LoXPr/g5scHnn7muFuenvTArEsmP3butXeOvPyWM8fffOblt4+acNsVk39/xb0vXP/QnBuffu+6F5bd+PySG2euuOq59y975J2hV0yp84cvOGfogD7d29sDpqlv3LghFAoCPThPpdQDFI0efbrYdA4EQiH/hx99vGjRkocffiIa9QOwxAPJsjZwYF+RqHCjAw5HWlrKmWeeByAz05dc0KRpEWcMkiAAAqSwsNfYsZOAdcDTQGFDQ9ItRvyk64YbJorchpzMM8bTKvv37xC85nMeSezgwzjgqip3pjsjI+XCCycAS2Oxe4AQ4PqJHZp2aHkBmDxv3rPLVnwaf5Frx9ZN059/Din9z/j105c8tvDS6WtunrPh1rmb7nuv+LFFxS9+Vjpndfm76yqWbK779Ie6z7Y2fLLl4OLvKt9eV/XKqvLpH+9/5P3dU+bv+N3cjdfNWj1u6uJz73gt7/RL3d2HrPv667VrVi1Z8snrb7zavXs+MAB4DHhGlhcCme+8M4N3wr69u886ZyjQ' $Button1 &= 'GyiIxeqTDY7D1679CEgBevFjwJYtGwAA15x66ln8SHj//XkAZs58JF6PRvVkQygUStZLS0penDErPx/AYOChkSNP4p0QD1efeOIOAMDjgwYN5EfCe+9NA05UlLeBx5LLTg+j0QK6v/zyFpca0FRPWWXNVZeOHzVq0Pfr1/rbA06sPRqLcEKYE+UUIEwmxKEyZ5xQiQAOGAeVwDihDmeUxAxm6LoZCgRZTG+s2NdYVPT0g7fmZfgaW5o5Z2tWL62pCQMnCfusU5oOtF188TkAAoFQIBBsaWltbGpv8TcljEcg1AigoaEhHA43NDRHo6bPVwBUhiIVAOLpaHDEYrF4ittxeHNjM4C4XYlEojU1tS0tbQCAIdu2NRw4sNJxcOBAefwjkYgOgQ0b1gO5Dz64+NuNi03TrK9vSIhdSkoKAMb55s2bl3y89Ivlf2loAHAp4E80RSKG/+8IVlfVRnQTAHDK7t172to267pdUVHV2tqevMv69dtE8E9F+Qdn0YQ4nHt2785auXr96PPGNzWZlVXVs6Y9cM1tj/7wzYrzx0/UqV+ybTM9J0WO2IrbsC1IJATZTRlnnAKmxWI2MU1HNy3bYlYsGvD7uW40V+zd/+2a2+658dIxZxXt2uPSPCUlO9ev3wT0APqK83op/uyAmp2dv2vXvvfem5uS4jPNmNebHm2tA8YB+s4da7v3dL/5+mtpaT7x/n24b19n27aB+fmXz593syR1bWnzh4OBAyV7P/r4b+k5PR6874762kaPxxuNht1uWST4PMCYvn3H3333VR5PgaZ5OYdI4sZ27vxKOM1jzz170u13XDrk5NGgLk1xM7BYVG9uPFheWbp58+r9+9uAUZLU03HqfT4C4M9/nm7bhqK4HMcOBeo7MleTs7LOvOOOcbKcn5aWDUiM2aZpFxfvBFRxHkeOopSeAv0jMB3S+DfefGTpJ5++MW/eimWfFm3Z1G/YBfSki0ffO/+qaUt+/afPbpm78f53' $Button1 &= 'vn/uo6LZy/fM+aJ0/lfl874se/vritlflLz06e5n/rb5vgXf3frqFzc8u3jsQ38deNn9SOk35Z5HSvfuXLjwvYUL//banJdPOWWweOz/A/wZeAaYCswELpckHAn3Aw/iCFCB+4DJALp0QWFhWrduGhKAB0fA48AbwJ1A1yMFEFcCbwIPiWGRmo6ePTw9eqTkF7glKTnmtWLCfxIlHUdAf/Egs8WEj9jhIuAlYGpy2Y/wuphgSQGCffpseeqpX6lq32Ao0LVLXn5u9v3PvrZ+e8WJZ44/uV8v1eNNSUvxubRUTdJkxaspnMNixLTtiBnVY5HmIA8Fwv6G2u3bfgzX7f3D766+aeJlW7ftkBQlFg1/8MGCL77YDIwlZBDnaYAhbq2K5wwCrJOkOonssShRIAwoHVvJFlc3pV5xZrcZ+FG0jgD6iYopSkL8mRjKBTiS5BM22OgYnIpWW5DKJSnVcVxAJbBfFEPcuoewYZniHeeY6OwSpU2ML3XS6i5RNyUpw3E0IAaED33nVU0mWY/+NRMmlPWe00/fd++9E1xqz7ZgMDvNc/KQIavXfPXU659GmXbyGef2zk9Xsru5VSnDRwkkDuYw2LZjGUZba3tzS6ShbMeunUVnDh0w48HrcrJzv9+6Q1FUPRb79NP3P//8G2AgMAbIFRywTq66+pMMpTgqsIXiUgD5sCYT4KIpTbi8kY5vMzJCAEidgwrBKBd8KIQckiUVrf97I0AmxCM4c4sP6oSYwkBYogMXhcTRkYNJgnfqwwApOeefPMuxfNuHi6G9wI6TTy6eMmVcWtqASCTGmXnKoBMpVZauXv/Oih9suNMzslPzuuTnZUhUBjjhiJuqlta2YENNOOIv7JZ3zzWjThk8oKGpqeRAldfr8fubVq78bM2aLY4zEDgfyAf0Q103jp+LY07PkeSNjtrKDnv99PAcNf95dxEgR6chyYQkhHFf167bbrq578mDfuU4rlAonOrzFPYoyMpIKypv' $Button1 &= '+m7Dd9uKy5uDTszmRNUUZsky7dYl87yBvc8+7+wu6VppRU1tfQNAJFmtqSn9YuWyTRuLgKGEnMt5ppiA1XlCx78XfRSZqAVWjxubN27cyMzMk2ybR/UoY06X/Kze3booLg9zENJjDEyTZLeqSW5XsK21tLQsahiqolFJ0vXAli3rV6/5pq42BpwGDANyO+SAJ2k4TsPRmXALI7MtLbdo3IUnjRh2TmZ6F1VNi8XMmKlrmtvj1tyaAoA5jmlZkWjMcZiqagBvaqqLn0qsX7+xtDQMZAMDRfEl7cGx4DgN6LBFCueSEItil3vLGcP79D/lxK453TIyCzTNRaA5jsM5A5EZtyxTN4xw3cHa/fviJ2YHqqujwuAPB7qIYJgB+s+WgOPfi6aEaJzbQAjYBuxSVLWwl+525WTkutxuF7jEYAbags1NkUBAF2m4XFH6AD0IyeBcSzpqPxPHaUgqcUGGKvzlGFACtAiVxUQlC9CBrqJnoYjOfIC3wwbY4vpvw/GfLpEIAaByrhBiCX2ld4Q/docXL3FwcJ6UgP+H1vj4T5ckfGqQRIV1NPLk0v8Hfi7p+A/58H/TiyTHafilcRz/F2SpKN30Uej4AAAAAElFTkSuQmCC' Local $bString = _WinAPI_Base64Decode($Button1) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\AutoIt Logo4.png", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_Button1 Func _Icon1($bSaveBinary = False, $sSavePath = @ScriptDir) Local $Icon1 $Icon1 &= 'iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFUUlEQVR42uWbXWhcRRTHf7NdaxrWUGus67KGUEotwYpoTKO2PhRphaaCPqggfjyJHxWLIAgi0gfJi7W0UfHBjxetvkjVCuKDIkVES5VQfCittFrL2pJY7bZs0yS914d7Ns4OE3fu7s7dG/cPQ3JnZ+bOnJk55/zPzFVKKcIwpI1YDawCCsBaYF1GqT3Ay7XFon6GtLav2YQGmQH6gDwwAKwBVsjAV5uFw5DFSqnaPGj54H0JoAu4GeiXQd8KDMsMu+JCrUBCL4NvVgA5oChpWJZvnwy0t1Ud9Dn4OAJYDgzKYK+TAQ8BPb46plAEYeB18DYB5GWwK4H12qALwOKktKJSajKad//KOQuMijIakIEnpRjnRRAGa4HDCbxqVomC7VhkgPMdPP6pDJ2N6WxKO7Yf+MZT2/cAN+kZ5+YcrfSkJzwKd6v2nrNp3QLXemx7makE04hLHttetBAEkJhlSqsSfBrYrD1XgAfkb3Uf3+vQznfAS/UKpVEJ2pLOO75wrHPUMt7tC0EJ2rZEoD2fcqx3wsUTXAjIGX0tOtZb2S4dUFVik8C3QAm4U2i0C8aBz4wAyZT2vFP2dz0cd3mZiw74k3/DV7cDG4Bt85Q9J9GgnPGeV2Ls960eV1ONDnAVwCXgLktjf1jKfmgpl5dZdBXAU0kJwHULZGRgVxv5o8Auy0yb2EsUK3TFbUY8IBB+UFWEAyLUevgb+KmVZvAxi1up//6jpf0VHszgXsc6E602gzuM5zPAW9rz2Dyz3zRvN8xg2bFe2WVpxyUSwxaJVvGR8VsRuDHtEaG4eNF4PiWSPmmYKoCPW9TPLqOvrtHopT78gBGig4855bLkssu3qExmunKx5jxjI1HovBG8D7xnKMHzxiSMtYpUNcIFPtAb6OnKsbS7x/Tcjjeh8BLzAxp1he/H' $Icon1 &= 'ONMzjvIeEWeoUQRpp8NZYB9wPRBMzVxEzc5JoAA832S/HgauMVzh14BpLa53i0M7E8DrvujwX9hPix5MgA5/FaOeNzq8W5sRHZ/EoKuN0uETjvXqni41KoBZ4J3/cFoe8kyHlznWK/jSAbvrzMLXQoPXNdj+tLG6ysYK+FnYaT0c82EGJyzEZofF5o80sd9HZdb11FY2qONZw+PLA8+J13VAy/8cOOI4UzaanUhkOK4OOAbsMfKe0WbcxKYG+3VVWv2AnZa8x+XvcqIjLZ0d/iorYSTme7aJs1VFhejCRkWLOdznOGGbW6kDuo26G6gfhh704Ad86ljnbCv9gCe1GajiDUsUdqORd9AxgBnHDzjjWK/UKivwg6VeMUbZXmAmjZ6gqw4oCrcvyzI/CWyZp+yQmC1di08CrwIvOL5vXJLuXOl+wS7xM1y4gBc6XC/tE+U4IjqgX7aGa2Q4MTrs62BkxKL5SzHM7mza6XAjiHNV9lFqL0mYdPhuotB5PfwOvN2OLeCbDn/pWOc3n3Q4SZhmsORY74gvOpw0TDrsehk7nyYdEAdlY5YrhmIcx+HoG/i+XWaw2bQ9KTOY1i1wIakXpVUASzpdAKc9tj2xEJTgJvx9L1ATpFGiBHN0Jsqd/sFEsEichTJwJfGusfwfMKMfaXYLYSkQXWnz8hmcCxTqzZBwLIkVkDW8rV8k7dfyu4hC2zeIQNYQ3Q9Y5cuKKKWOKtThIPR/SOxiBaaAQ5JMelsUwawnOi7vi0l7rQjDsCejMiTxXXMzZrAk6QDwruZX9ItQCkTH50OyYmLpl5AQhZr7f6EERAKiWLx5JtcrAql+S9wnaRD7fZ8rtO0AIan8djgOJiUdIjooqaJHhFAVyB2ygk4bOsGbEP4BIM4eA8u3/o4AAAAASUVORK5CYII=' Local $bString = _WinAPI_Base64Decode($Icon1) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\Excel_Off.png", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_Icon1 Func _WinAPI_Base64Decode($sB64String) Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "") Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]") $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "") Return DllStructGetData($bBuffer, 1) EndFunc ;==>_WinAPI_Base64Decode @BBs19 feel free to add these two functions to your UDF if you want. It should look like this: Edited May 12, 2020 by UEZ Ebola57 1 Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Ebola57 Posted May 15, 2020 Author Share Posted May 15, 2020 Thanks you very much, going to implement your code and give feedback Link to comment Share on other sites More sharing options...
Ebola57 Posted May 28, 2020 Author Share Posted May 28, 2020 (edited) I was busy on another subject and I couldn't get over it until today Also, I have to adapt your code to my needs and to understand it : that was not simple GDI+ isn't that simple But I have to say, it works flawlessly ! Thank you Edited May 28, 2020 by Ebola57 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now