Rex Posted May 13, 2016 Share Posted May 13, 2016 Hi I have been searching for a way to set img to buttons from either Base64 or Binary code I found this thread https://www.autoitscript.com/forum/topic/129550-set-binary-png-image-to-button-ctrl/ but I can't get it to work. My problem is that I needed some large checkboxes, but it seems that size of std chackboxes can't be changed, so I created 2 images one with check on and one blank. Those I have set to buttons and uses them as checkboxes instead, course I needed on event management for em, and also wanted to be able to tab to them, like normal checkboxes. I know that I could use the ResurcesEx UDF to emp the img's to the exe file, but then the img's only would work when compiled. Is there some way to use button images from either Binary or Base64 code, directly from the script? Or would it be a bad idea to do so? My code is quit simple for the check part Func idBtn_Chk1() If GuiCtrlRead($idBtn_Chk1) = 1 then GuiCtrlSetData($idBtn_Chk1, 0) GUICtrlSetImage($idBtn_Chk1, $dIconOn, -1, 0) $g_bChk1 = True Else GuiCtrlSetData($idBtn_Chk1, 1) GUICtrlSetImage($idBtn_Chk1, $dIconOff, -1, 0) $g_bChk1 = False Endif Endfunc Any suggestions, to do it another and more simple way is of course welcome Cheers /Rex Link to comment Share on other sites More sharing options...
AutoBert Posted May 13, 2016 Share Posted May 13, 2016 (edited) Creating Bitmap from memory is a good idea if you don't want that user can change a bitmap. Otherwise creating Bitmap from a file is easier if changing of bitmap may be needed in future. Here a small example creating a piccontrol with a bitmap from mem: ;coded by UEZ 2011 #include <GUIConstantsEx.au3> #include <GDIPlus.au3> #Include <Memory.au3> _GDIPlus_Startup() Global Const $STM_SETIMAGE = 0x0172 Global $msg Global Const $hBmp = _GDIPlus_BitmapCreateFromMemory(InetRead("https://www.autoitscript.com/forum/uploads/profile/photo-thumb-29844.png"), True) ;to load an image from the net Global Const $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBmp) Global Const $iWidth = _GDIPlus_ImageGetWidth($hBitmap) Global Const $iHeight = _GDIPlus_ImageGetHeight($hBitmap) Global Const $hGUI = GUICreate("Display PNG Image in picture control", $iWidth, $iHeight) Global Const $idPic = GUICtrlCreatePic("", 0, 0, $iWidth, $iHeight) _WinAPI_DeleteObject(GUICtrlSendMsg($idPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hBmp)) GUISetState() While True $msg = GUIGetMsg() Switch $msg Case $idPic MsgBox(0, "Information", "PNG image was clicked"&@crlf&@crlf&"found: https://www.autoitscript.com/forum/topic/144934-guictrlsetimage-does-not-always-draw-picture/?do=findComment&comment=1023152") Case $GUI_EVENT_CLOSE _WinAPI_DeleteObject($hBmp) _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_Shutdown() GUIDelete($hGUI) Exit EndSwitch WEnd Edit: changed to _GDIPlus_BitmapCreateFromMemory. Edited May 13, 2016 by AutoBert Link to comment Share on other sites More sharing options...
UEZ Posted May 13, 2016 Share Posted May 13, 2016 Checkout The example above are obsolete because Load_BMP_From_Mem is already integrated -> _GDIPlus_BitmapCreateFromMemory() 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...
Rex Posted May 13, 2016 Author Share Posted May 13, 2016 @AutoBert The user should not be able to change the bitmap. I have already tried the exp posted, couldn't get it to work ether @UEZ I use your Base64 converter quit often it's a good like tool But I couldn't get it to work correctly for my project, I guess it's be corse I put it in a function that I then calls when the user clicks the button (checkbox), one for on and one for off, currently I have 10 buttons, that is in use as checkboxes. Cheers /Rex Link to comment Share on other sites More sharing options...
AutoBert Posted May 13, 2016 Share Posted May 13, 2016 (edited) I don't know where your problems are here the example with hardcoded png: loadBmpFromMem.au3 Edited May 13, 2016 by AutoBert Link to comment Share on other sites More sharing options...
Rex Posted May 13, 2016 Author Share Posted May 13, 2016 4 minutes ago, AutoBert said: I don't know where your problems are here the example with hardcoded png: loadBmpFromMem.au3 I couldn't get it work for a button control, I have no problem using it with a piccontrol - that I do in other of my programs Cheers /Rex Link to comment Share on other sites More sharing options...
Rex Posted May 13, 2016 Author Share Posted May 13, 2016 I found out why I couldn't get it to work. I did send the guictrlID to the function and not the handle as I should had Sry (using UEZ's base64 example) Cheers /Rex 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