Lucid Posted April 2, 2015 Posted April 2, 2015 I'm trying to rethink how I do my GUIs, and I'm struggling with a new issue - and I can't find what I'm looking for elsewhere in the forum. So I'm hoping someone here can point me in the right direction. I'm tinkering with GUICtrlOnHover, but what I'm really wanting to do is use just 1 PNG file (as opposed to 3 separate files), and just have it become "solid" on hover, but semi-transparent when not active. Does that make sense? Can anyone shed any light on how I can adjust the transparency of an image "button" using GDI+? #include-once #include <GDIPlus.au3> #include <GUICtrlOnHover.au3> #include <GUIConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> AutoItSetOption("MustDeclareVars", 1) _GDIPlus_Startup() Local $hGUI = GUICreate("test", 200, 100, -1, -1, $WS_POPUP, $WS_EX_LAYERED) GUISetBkColor(0x000000, $hGUI) Local $hButtonImagePNG = _GDIPlus_ImageLoadFromFile("button.png") Local $iButtonWidth = _GDIPlus_ImageGetWidth($hButtonImagePNG) Local $iButtonHeight = _GDIPlus_ImageGetHeight($hButtonImagePNG) Local $hButtonImageBMP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hButtonImagePNG) Local $hButton = GUICtrlCreatePic("", 0, 0, $iButtonWidth, $iButtonHeight) _SendMessage(GUICtrlGetHandle($hButton), 0x0172, 0, $hButtonImageBMP) _GUICtrl_OnHoverRegister($hButton, "_ImageButtonHover", "_ImageButtonHover", "_ImageButtonPressed", "_ImageButtonPressed", 0) GUISetState(@SW_SHOW, $hGUI) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd I should mention that I can get the 3-phase buttons to work just fine (I left out the code for my _ImageButtonHover and _ImageButtonPressed functions since I don't have anything in them that works for the single image file issue I'm currently running into). I'm just having problems wrapping my brain around how I can get the solid/faded look for a single image. Thanks!
UEZ Posted April 2, 2015 Posted April 2, 2015 (edited) Try this:expandcollapse popup#AutoIt3Wrapper_Version=b #include <Array.au3> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #Include <WindowsConstants.au3> _GDIPlus_Startup() Global $aBtn[3] = [_GDIPlus_BitmapCreateFromMemory(_b0png(), True), _GDIPlus_BitmapCreateFromMemory(_b1png(), True), _GDIPlus_BitmapCreateFromMemory(_b2png(), True)] Global Const $hGUI = GUICreate("Button Test", 256, 64, -1, @DesktopHeight / 2 - 200) Global $aPic_Btn[2][2] = [[GUICtrlCreatePic("", 30, 7, 82, 49), 0], [GUICtrlCreatePic("", 150, 7, 82, 49), 0]] _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[0][0], $STM_SETIMAGE, $IMAGE_BITMAP, $aBtn[0])) _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[1][0], $STM_SETIMAGE, $IMAGE_BITMAP, $aBtn[0])) GUISetState() Global $aHover, $i, $bNoHover = False, $bMBPressed = False Do Switch GUIGetMsg() Case $GUI_EVENT_CLOSE GUIDelete() _GDIPlus_Shutdown() _WinAPI_DeleteObject($aBtn[0]) _WinAPI_DeleteObject($aBtn[1]) _WinAPI_DeleteObject($aBtn[2]) Exit EndSwitch $aHover = GUIGetCursorInfo($hGUI) $iPos = _ArraySearch($aPic_Btn, $aHover[4], 0, 0, 0, 0, 1, 0) Switch $iPos Case 0 To UBound($aPic_Btn) - 1 $bNoHover = False $aHover = GUIGetCursorInfo($hGUI) Switch $aHover[2] Case 0 If Not $aPic_Btn[$iPos][1] Then _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_ERASENOW) _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$iPos][0], $STM_SETIMAGE, $IMAGE_BITMAP, 0)) _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$iPos][0], $STM_SETIMAGE, $IMAGE_BITMAP, $aBtn[1])) For $i = 0 To UBound($aPic_Btn) - 1 If $i <> $iPos Then $aPic_Btn[$i][1] = 0 _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$i][0], $STM_SETIMAGE, $IMAGE_BITMAP, 0)) _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$i][0], $STM_SETIMAGE, $IMAGE_BITMAP, $aBtn[0])) EndIf Next _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW) $aPic_Btn[$iPos][1] = 1 $bMBPressed = False EndIf Case 1 If Not $bMBPressed Then $bMBPressed = True _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_ERASENOW) For $i = 0 To UBound($aPic_Btn) - 1 $aPic_Btn[$i][1] = 0 _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$i][0], $STM_SETIMAGE, $IMAGE_BITMAP, 0)) If $i = $iPos Then _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$i][0], $STM_SETIMAGE, $IMAGE_BITMAP, $aBtn[2])) ConsoleWrite("Button with id was pressed: " & $aPic_Btn[$iPos][0] & @CRLF) Else _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$i][0], $STM_SETIMAGE, $IMAGE_BITMAP, $aBtn[0])) EndIf Next _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW) EndIf EndSwitch Case Else If Not $bNoHover Then _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_ERASENOW) For $i = 0 To UBound($aPic_Btn) - 1 $aPic_Btn[$i][1] = 0 _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$i][0], $STM_SETIMAGE, $IMAGE_BITMAP, 0)) _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$i][0], $STM_SETIMAGE, $IMAGE_BITMAP, $aBtn[0])) Next _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW) $bNoHover = True EndIf EndSwitch Until False ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2015-03-02 Func _b0png($bSaveBinary = False, $sSavePath = @ScriptDir) Local $b0png $b0png &= 'iVBORw0KGgoAAAANSUhEUgAAAFIAAAAxCAYAAABJTP5vAAAIdklEQVR4Xu1bbUyU2RU+8wEM39+OWlZ+qCkFDKui/eHKbqvZsMYPEs2mRpsm3V1jsgmL+sNWUX/YJtuQoCYra5P9obtRNxujsaWpdEMVEfkyYCMUAxq3CaCbAIowM8zwMtPnnHJ/jMPw8s4YU5h5kuO9nJm5932f+5x7zjt3NPl8PgofUZgpGKKIEhklMkpkFNaZnO+990uaDe3trckmk+lDs9m8FbYafTvMBiMF7v8/A0l2As2PsE70a2HfFRWtHiMd3Lr1zzkTKWhouBngi4+PjwVxBywWy+9gaegTWkIrxCmbJ7DBckEgWxn6p3t6uj/XNK1qZGTEE6Ii9QESc0HYFRBXbLVahUBuY2JipGWYaH7Bi9JvamqK1UlAktfr/UNsbOxvbDbbB4ODg49fO5Eg8Wcg8XsQ9hMYxcXFUXJSkrRmKHDK6yUvLmheAtcPFZJrYkIiC1gJkXQuX7689PHjx3dfG5EgcQkm+IciMSUlhZJAIq+iw+kkj8dDWEmazwCBHFlyH5OTk/x3Mu6rrqCgcGN3d9f9sImExCE40zdYoRwmMT0tjRISEmgCq+cEiQvkqUiiyQ3jBGkBqR6QCWKTXC7nXzdseKeoqenOSFjlD5T4W5C4CUapqalMohDocDiExIUG3/SeCfVIpMFykHi+evfdX5hCViRCOgFq/CPLPiE+nhJhTKDL5aJIwJSmSTs+PrYlNTWtFN2/h6RIkPgRSFzEIZ2KfXFS04TESAHuW/ZLJKK40dEXlVBlbEiKBJH7WI2JCGf0aXxsTKQfKZCamEhC3OEYL9S0zE2sSkNEtrW15CHBFDKRNoT0BAbTsHdEGixQpdvtZjJTkBc+NEwkFPi+KgksaB3j40Q6ajx1+jRlZWXRr/fupQUCSTqA1JlO5/iajRtLlsIxaITI9TApuKFEtjlnveGREcrIyKBwUFFRQTt27KDdu3fTs2fPgvnfWIgjk7MysyYntdWGiATyeQAryh7N42GGjNQQYuFAzff8+XMpkqGMYP43UqyDSE48KV7v1E/h+psRRebAuOXi1FCS8bGFSaTvFVJ9wfxvQpHT94PwtmHxlhnN2ilMIk0/Rxuh5cSJE7RlyxauQ2lgYIBqamrozp07BEhI7t+/n44ePSo+hUuXLtHQ0BCVl5fTgQMHqKysTPw3btzgRsquurq6Gf2lpaXSLywslNBfuXIlMfr6+uj8+fN+8/B4TU1NqA3HZSz1vmPHjtHTp0+DxbYQCRLNXq8v3VAdCRLjpMMkwjCSvgE5OTlkt9uppKSECgoK5IIPHjxIGlStxlAEvOKTUH358iWdqq6mq1evEiAk5efn09q1a5n8mfyyAEsWL6aTJ08S4+2iInltDOVaZWUlLcrO9ptn8+bNMte6det4HNnPDx8+PNt9qv3fDEd8UCJ1wxQTYBBdY/T399O+fftkT8nEBX594QJlZmbSJ/D5/EPR/7MwwbSP9yUFHicLY6AN6v8VlI4IEDVjJPFXfPYZMT76+GMhDuMqVQrBcJDT4aCOjg7Ky8tj4me+tznW3VY9Ir3cGnwiSExMFNJuNzaK+hZDMfiaKnCRVD/QF7hfBvez+mWeJ0+eUHp6Or+mFlZec+I1/p5AAaRzfew3huQC0oUpFCLVSooZwEzvF5VSoCJ1P4u/decAMfJlCpKj32vwyXYz6Z8wuR/w+dzcXN5adK/HKJFuWBypfYNNn72g5Q/2ymCM65dP+n1RI/Y6Lof8/KzC4eFhWUT4g8+tRAPDYgR7nwSn0T1yjNQnDRi94tu2fbuopaenR9SiVhyrP1soK58kLvlbx9/V1SWkvbVsmZ+f1djd3c17a9B5/H2BhuMIlYCZDs0QkZDzgJK1avVMhcihQ4fEt2rVKtqzZw/19vbS5cuX5Yzn+vXrhIMlyZbqrOTs2bN8w37ztLW1EWPbtm2sFF3/xYsXRZXV1dXiV+MC' $b0png &= 'Mjf27ZlC288X/D4VkWYP/nUZVWS3LyCD6gNhJOqora2lc+fOSWmyc+dOvhExRlVVlTyTt7e3y/sePHjAScHvphoaGujatWu0a9cuamlpofr6+ln9OKiiI0eOSL+5uZnu3r0rCj1+/LjMg0fdcI5tWY0sBIfZbHpBQTDjj6hwJlOOM4wzuABWhJzLzAXq+AFHFNyXz2IcvqmAxKNe54XCPDIH+n7vxfMtH2uo0OLzotn8Mp7UqJqmKgi+FokGBU4oOCkUvwLGkjExDo8XcK3/OyFI60P1ca61taXaCJF5UFAPJuTnbSElEiFPNDAWg92+uDEtLf1Pzc1Nc3/WLi5e//D+/Y6HUEwelpVMUAr6FGnwToc1ROVCpAzHxFg7DdeRkPSXCLUzUCwPJNKPRIADwvFVf0xM7JPGxtuDBpONyPor2CgIZWnLykQSVJLBvWsI6V6I6ftQCnI+MXTiCPb3ILIGg0hpAx9FEkAe8kVyX2JiwiD69SGfayP7/RlK7ERLisxIATI1Z/YX2dnZ/7ZYrN/iR2WekImEAr0gcSuHOFopG5DRF/rpoRKNZ9Eie3NcnK0DpN4M+7c/o6Ojg0uXLn0fRNYjzJN4EoS8lETqy4AFAFV0i6GudWdn228nJ6c8gq8GavSFS6R6cmhbsWLFJij0LyDUjsFFmSiJJJuDYPVoNq+IUy2Ms7MicRQkNuKrwB/g+xwkvnitv4989OhRW3HxujU4eLrgdDpK4IrFRBwCAc+m80yJyiaRWB7ii+guRF0vXvkCJA697h+aCu7dax/ETzc+gArL8DOOT93uieVQaAYuwgYCLWgJ7XwhcApCcFutMSNIKv14BPwBBLL6amF1IFEzlOHJIKYnuAJCecKfw4pgubA0GW9+QYMxef+B/QvWCgInKARE2P/8iv73kCiRUSKjiBIZJTJKZBT/BVW4TPqo03KPAAAAAElFTkSuQmCC' Local $bString = _WinAPI_Base64Decode($b0png) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\b0.png", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_b0png Func _b2png($bSaveBinary = False, $sSavePath = @ScriptDir) Local $b2png $b2png &= 'iVBORw0KGgoAAAANSUhEUgAAAFIAAAAxCAMAAAB+kg5dAAACalBMVEX///8AAAA/P0EFBQU/P0EpKCg5OTsoJiY9PT85OTs5OTsODg4GBgYGBgY7Oz08PD4/P0ERERE/P0E/P0E/P0E/P0EzMzU/P0E/P0E+PkA/P0EDAwMFBQUQEBAVFRU5OTsEBAQuLjAXFxgXFxgEBAQSEhIEBAQMDA0ODg4hISITExMiIiMEBAQDAwMDAwMhISIFBQUmJCQEBAQGBgYEBAQFBQUEBAQFBQUDAwMEBAQFBQU2NjghISIFBQUKCgoPDxAFBQUGBgYDAwMPDw8GBgYEBAQEBAQSEhIGBgYNDQ0DAwMWFhc6OjwFBQUfHyAFBQUtLS4ICAgSEhIGBgYfHyA8PD4FBQUJCQkPDw82NjgDAwMEBAQhISI8PD4HBQUFBQUNDQ4UFBU6Ojs+PkAGBgYICAgODg4REREDAwM+PkAUFBUPDw8REREwMDE+PkA/P0EgICASEhMVFRU+PkA/P0EyMjQeHh8QEBAREREhISI8PD4/P0E/P0E3NzglJSYZGRoTExMFBQUUFBQbGxsnJyg7Oz0/P0E/P0EGBgYKCgoODg86OjwHBwcJCQkMDAwNDQ0ODg4qKioPDw8QEBALCwsoKCgGBgYJCQkVFRUPDg4HBwcNDAwAAAASEhIICAgiIiIjIyMRERETEhIZGRkdHR0cHBwKCgoFBQUYGBgEBAQWFhYTExMBAQECAgIDAwMKCQkWFRUXFxcpKSkgICAMCwsSEREkJCQfHx8ZGBgUFBQVFBQaGhoQDw8eHh4aGRkREBAcGxslJSUpKCgnJycUExMmJiYXFhYODQ0mJSUbGxshISEIBwciISEYFxeZK10PAAAAjnRSTlMAAKEAAACnAEeZovz3+GxIBvyNbgGdrwg/GgQZpPfiEmOa4Tpt8OMj8q3vMMsoDc3gAGTg5GMN6QZ370jD0/PzBusf+dBur/Gl2injim7RzrjX8m7QiAp7+KsCvMyVAALO6qZBrxrw9wp4NvP2tZAQNujukhoau/n5z6SAFFS/4vQo9eLGp5dL6vD5iABpnxiDxQAAA2pJREFUeF7t1VWz22YQgOG65wTaJG3DUGZmZmZmZmZmZt79SCwz42GmcPk/deVRZizbzYysm16c92LtlexnRiPDPv//Fuv3O+2I685YqYdo5dnPnHte/54C5BKvCy68yDYUAIYIQF12/xVLYs06yKtO0Q1g6UwmHqK0FAxuPL47edM5thJmdiY7GS6T0BOO7iSXLTv4uARUs5OD1UzIqmZciMtP7iQfetiG6fndPhgSzTB22OHt5Jln6WrnpBnvsQXGTlzXRr5wviFLJPYaY4de3EYeY0Nld7z30oiXHBQkLzXSQ/GxCDE8aXmAPFVX09PpKEnAIwPktTarxH1giM/0YiKevrmVPMSQpvSrcKFkW8MT3kzukv8dw6MObCVvL8SreyWztkeON/ZCwrEHtJI/qMxYRNKCn35uJVdBZmHWb5CbKc4naPk9SWOeD84OcyqX9CYdytGaozM5/s8451v9t1mwYr9WUseMFH4mT1XKgs8IsW2iKESW2yC0kuu6iZEUzWJuuFKztbwQOT4iyyZPi2YMcP8gGZ+1/EwuGgPWn9v+soi0LCJHre1Zm87QhdPcnq8NWFu1gpXj9bKzwM1Ry4spXNpGCuZHpMFYjpcZkYwRqZiWtekMkYwN8artTYlEIpPcpJXqJNOsnaxjN5J2kfBeZBo+WepOrkLZTmpud3KIxw1vCjtIoloRIK8kEv2miERMJWuYGi8jlrhdQC2vI2JyV4OmVkog5rW6ked1QMFLOjaDqwO35xpoJecA81w0vIGlHUQSVkSkvYCeNoVT2lwNgiTA9YEP0Q0gfnP8dnKV4zum3QHHmeP870kinbEk53nHGaHdceY1zv+oFR0iRx2PdLwAbr6llby1IBjsqeAaRbeeAKroumXbLdCxhuvqAGXaAfRa' $b2png &= 'cwHdVQCKnnopuC3whfzSYAyipfCOwM9G/50oYDRKCu5aujlA3q0EqkjBPffGAuR9PzIRTXzgweVB8pdfQbBI5COPHhQkH3v8CSYxgvjkU0/HgmRf37PPCcl6Fp/f8OK6DrLvpZeFFNATiK+8+trrsXaSeuNNIaVACBuytza8/U6sk6Tefe99IYVgIfvgw48+/iTWQcaabfn0s8+/WC1DtPqrr7/59rvvt8S6kH4bN61ds37fEK1fs3bTRtICZMQWW+xfvzSO9/+fiBMAAAAASUVORK5CYII=' Local $bString = _WinAPI_Base64Decode($b2png) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\b2.png", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_b2png Func _b1png($bSaveBinary = False, $sSavePath = @ScriptDir) Local $b1png $b1png &= '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' $b1png &= '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' $b1png &= 'V2Xdr48luwbZeHT6Z1u729b3qAvlrooIYJfnRCPqbLwVDZGzdZk6JNuT/VnrbMSFSRj1GRP2Qy38vpEclP200RTPuelfyUHr7gGgcFLeZvxg96kAJQ8y9ezuJqu1nuzDW58lPQ8N+4y8MC57IINFC3Ik5SJnc6Wg4dF/+Wb8UCJ0Y+hIRrDAA1dmO5Ig9v3PQwgmqUzlAUTp1Yc4nDMQTG+dMqJQ+FR+sCRzP1gKCgkmy7rxp+sTuvzvEnO+RaQw94AqP/Q/fR91hhADkDkw6Zxy+b/PjMMU594whAsPmuhDEPNhhuch+Jz0b7lT2F9wYXECAAAAAElFTkSuQmCC' Local $bString = _WinAPI_Base64Decode($b1png) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\b1.png", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_b1png 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_Base64DecodeOnly tested on Win 8.1 x64 running AutoIt v3.3.13.20 (beta). Edited April 3, 2015 by UEZ 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!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
Lucid Posted April 3, 2015 Author Posted April 3, 2015 UEZ, Thanks for the code! I ended up adding: Global Const $STM_SETIMAGE = 0x0172 but after that, it looks like it worked just fine on my x64 Win8.1 box. Unfortunately, it doesn't look like it does what I'm currently after. When it's visible, with no mouse hovering over it, I'm wanting the image button to be semi-transparent (say, 50%). Then, when the mouse moves over it, the button should change to 100% visibility/opaque. Does that make sense? Did I overlook something in the example code? Thanks again!
Solution UEZ Posted April 3, 2015 Solution Posted April 3, 2015 (edited) I don't know why you want to have the button semi transparent but here we go: expandcollapse popup#AutoIt3Wrapper_Version=b #include <Array.au3> #include <GDIPlus.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #Include <WindowsConstants.au3> _GDIPlus_Startup() #Region convert bitmap to semi transparent bitmap Global Const $hBitmap_empty = _GDIPlus_BitmapCreateFromScan0(82, 49) Global Const $hGfx = _GDIPlus_ImageGetGraphicsContext($hBitmap_empty) Global Const $hBitmap = _GDIPlus_BitmapCreateFromMemory(_b0png()) Global Const $hAttribute_Alpha = _GDIPlus_ImageAttributesCreate() Global Const $tColorMatrix = _GDIPlus_ColorMatrixCreateTranslate(0, 0, 0, -0.5) _GDIPlus_ImageAttributesSetColorMatrix($hAttribute_Alpha, 0, True, DllStructGetPtr($tColorMatrix)) _GDIPlus_GraphicsDrawImageRectRect($hGfx, $hBitmap, 0, 0, 82, 49, 0, 0, 82, 49, $hAttribute_Alpha) _GDIPlus_GraphicsDispose($hGfx) _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_ImageAttributesDispose($hAttribute_Alpha) #EndRegion Global $aBtn[3] = [_GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap_empty), _GDIPlus_BitmapCreateFromMemory(_b1png(), True), _GDIPlus_BitmapCreateFromMemory(_b2png(), True)] _GDIPlus_BitmapDispose($hBitmap_empty) Global Const $hGUI = GUICreate("Button Test", 256, 64, -1, @DesktopHeight / 2 - 200) GUISetBkColor(0xC8C8C8, $hGUI) Global $aPic_Btn[2][2] = [[GUICtrlCreatePic("", 30, 7, 82, 49), 0], [GUICtrlCreatePic("", 150, 7, 82, 49), 0]] _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[0][0], $STM_SETIMAGE, $IMAGE_BITMAP, $aBtn[0])) _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[1][0], $STM_SETIMAGE, $IMAGE_BITMAP, $aBtn[0])) GUISetState() Global $aHover, $i, $bNoHover = False, $bMBPressed = False Do Switch GUIGetMsg() Case $GUI_EVENT_CLOSE GUIDelete() _GDIPlus_Shutdown() _WinAPI_DeleteObject($aBtn[0]) _WinAPI_DeleteObject($aBtn[1]) _WinAPI_DeleteObject($aBtn[2]) Exit EndSwitch $aHover = GUIGetCursorInfo($hGUI) $iPos = _ArraySearch($aPic_Btn, $aHover[4], 0, 0, 0, 0, 1, 0) Switch $iPos Case 0 To UBound($aPic_Btn) - 1 $bNoHover = False $aHover = GUIGetCursorInfo($hGUI) Switch $aHover[2] Case 0 If Not $aPic_Btn[$iPos][1] Then _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_ERASENOW) _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$iPos][0], $STM_SETIMAGE, $IMAGE_BITMAP, 0)) _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$iPos][0], $STM_SETIMAGE, $IMAGE_BITMAP, $aBtn[1])) For $i = 0 To UBound($aPic_Btn) - 1 If $i <> $iPos Then $aPic_Btn[$i][1] = 0 _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$i][0], $STM_SETIMAGE, $IMAGE_BITMAP, 0)) _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$i][0], $STM_SETIMAGE, $IMAGE_BITMAP, $aBtn[0])) EndIf Next _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW) $aPic_Btn[$iPos][1] = 1 $bMBPressed = False EndIf Case 1 If Not $bMBPressed Then $bMBPressed = True _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_ERASENOW) For $i = 0 To UBound($aPic_Btn) - 1 $aPic_Btn[$i][1] = 0 _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$i][0], $STM_SETIMAGE, $IMAGE_BITMAP, 0)) If $i = $iPos Then _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$i][0], $STM_SETIMAGE, $IMAGE_BITMAP, $aBtn[2])) ConsoleWrite("Button with id was pressed: " & $aPic_Btn[$iPos][0] & @CRLF) Else _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$i][0], $STM_SETIMAGE, $IMAGE_BITMAP, $aBtn[0])) EndIf Next _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW) EndIf EndSwitch Case Else If Not $bNoHover Then _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_ERASENOW) For $i = 0 To UBound($aPic_Btn) - 1 $aPic_Btn[$i][1] = 0 _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$i][0], $STM_SETIMAGE, $IMAGE_BITMAP, 0)) _WinAPI_DeleteObject(GUICtrlSendMsg($aPic_Btn[$i][0], $STM_SETIMAGE, $IMAGE_BITMAP, $aBtn[0])) Next _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW) $bNoHover = True EndIf EndSwitch Until False ;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2015-03-02 Func _b0png($bSaveBinary = False, $sSavePath = @ScriptDir) Local $b0png $b0png &= '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' $b0png &= 'Mjf27ZlC288X/D4VkWYP/nUZVWS3LyCD6gNhJOqora2lc+fOSWmyc+dOvhExRlVVlTyTt7e3y/sePHjAScHvphoaGujatWu0a9cuamlpofr6+ln9OKiiI0eOSL+5uZnu3r0rCj1+/LjMg0fdcI5tWY0sBIfZbHpBQTDjj6hwJlOOM4wzuABWhJzLzAXq+AFHFNyXz2IcvqmAxKNe54XCPDIH+n7vxfMtH2uo0OLzotn8Mp7UqJqmKgi+FokGBU4oOCkUvwLGkjExDo8XcK3/OyFI60P1ca61taXaCJF5UFAPJuTnbSElEiFPNDAWg92+uDEtLf1Pzc1Nc3/WLi5e//D+/Y6HUEwelpVMUAr6FGnwToc1ROVCpAzHxFg7DdeRkPSXCLUzUCwPJNKPRIADwvFVf0xM7JPGxtuDBpONyPor2CgIZWnLykQSVJLBvWsI6V6I6ftQCnI+MXTiCPb3ILIGg0hpAx9FEkAe8kVyX2JiwiD69SGfayP7/RlK7ERLisxIATI1Z/YX2dnZ/7ZYrN/iR2WekImEAr0gcSuHOFopG5DRF/rpoRKNZ9Eie3NcnK0DpN4M+7c/o6Ojg0uXLn0fRNYjzJN4EoS8lETqy4AFAFV0i6GudWdn228nJ6c8gq8GavSFS6R6cmhbsWLFJij0LyDUjsFFmSiJJJuDYPVoNq+IUy2Ms7MicRQkNuKrwB/g+xwkvnitv4989OhRW3HxujU4eLrgdDpK4IrFRBwCAc+m80yJyiaRWB7ii+guRF0vXvkCJA697h+aCu7dax/ETzc+gArL8DOOT93uieVQaAYuwgYCLWgJ7XwhcApCcFutMSNIKv14BPwBBLL6amF1IFEzlOHJIKYnuAJCecKfw4pgubA0GW9+QYMxef+B/QvWCgInKARE2P/8iv73kCiRUSKjiBIZJTJKZBT/BVW4TPqo03KPAAAAAElFTkSuQmCC' Local $bString = _WinAPI_Base64Decode($b0png) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\b0.png", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_b0png Func _b2png($bSaveBinary = False, $sSavePath = @ScriptDir) Local $b2png $b2png &= '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' $b2png &= 'cwHdVQCKnnopuC3whfzSYAyipfCOwM9G/50oYDRKCu5aujlA3q0EqkjBPffGAuR9PzIRTXzgweVB8pdfQbBI5COPHhQkH3v8CSYxgvjkU0/HgmRf37PPCcl6Fp/f8OK6DrLvpZeFFNATiK+8+trrsXaSeuNNIaVACBuytza8/U6sk6Tefe99IYVgIfvgw48+/iTWQcaabfn0s8+/WC1DtPqrr7/59rvvt8S6kH4bN61ds37fEK1fs3bTRtICZMQWW+xfvzSO9/+fiBMAAAAASUVORK5CYII=' Local $bString = _WinAPI_Base64Decode($b2png) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\b2.png", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_b2png Func _b1png($bSaveBinary = False, $sSavePath = @ScriptDir) Local $b1png $b1png &= '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' $b1png &= 'oI5+xiyIc2bq3/NrqBPPgBw/0YLb+Sb4PbeCaeepqohxnavuwcEwCip0og+SRJQbeEebcWQYWk50zm2L6geQJ5yOaMWd4O/tgJw8HclF14J1FRGtWU5tzpxzs4Y9nQfQb9F16J57N6JX1yNevQyUgNLsRZW8cNcc6jR4hOSymyGPm4h4zf3gG9ZANR6jy+YiufkeFH5xQ1WnJadcCP7c4yjcOw9yxDjIa34KeeVt4EturDS2grCRw9zAsn0/GHCkCgCSwkLyXy2UgpSyFwtTnYiXzjUQK3D5hifB394MecoUcm9KkkdOqaPTAXmE/BQ2qBqpYXzuTEQvrwPfuM427Pu7tLtXVSJDfvFr9KgAosd+U4ENzsHf/SfYjjegmo4HwMJZFsnavAdeHJR8kHHOjCBf5Faw93ZCDa6HGn4MlRMIAtyLhR9/bq7Gn2ZD+e2/VwHmr71QaVw5ssmVORLWmQSss8O+DoYMo/IQZhxyInYcnyQFww0tIp0Ne+DgEKQTQ++TgqLj2oHITf0H4FAncl34h3jiXOn1fopgkQilsg/JaD7vlqp2h4DdOV2bltE5pCRwwRTR1V3syLqejruKGfel/GNGXhJyInY8Z2dBp78I4ShllBF/pMMKJQEtqcPO9Kxo/8gOV7o7rUOsqx0QST6TAkokVedGEE6KAKdib260bJtPoTq15IlnVkKWv7PdgU8ZKfqdNE+nhshe9OikwkDgOVs3WuTAuuxpnnODSmcWQlQNMWBACIFk5mzzsjdDGgdYgL/1KqQuU00nVs7lpPMhpl5G9RtYbR9q+Hshjx7vACZ0/c7XoerqdR1jHOQE2LsNfMsLEKfrunR9plw2joE47xuVRmTrV0HJhBrM5OZa14jkUGENQKax+aChAPBh3taWOOcP873iyBFNNZxbaMwtOTFXeQUig2LCFNHNNzyF5LtLoMaON+FcGbOxTX9NzQD+4BINYhjK3/6JDctdW8H1+BFjmitOUYkdt0aP3QPxlWtRuuMRe92GdYgeXgKuhzeycSySOUvcOHI34oXXILp/AdiXr4aYfiXEzO/YazabceTPwgVgIZ27nRH8OTiZxZabhtc8LBfi5K+QG9z9aEUcR2gN1vq6niJeNfiWL2G/WYPkboGBc296SPNtuHPmTyVpeEMZJepFaY5OMyCtvOTg9HJF3cEyMEHwlEjcsYQi0MCv1kMdOXw5FFYCOKDVTivm6DaKiW7wh/kmoYcDfNQ4oHWTNSFLV7olINM+iAAwLetSGj44sPmr1HkdEMHNh8SYf5/qKSkVEiBakTLnBFEKcvDIJgMRUNgUrI6TVJwF0elfWntKk6aNjt/agiQRVXuH3FKTg6koHJiDBwdTeqB8qOGqes45rdTkNggpu5GUpDAGCCgBprA/4wJAYQ+A7Y5LOYRJ70jZw9aNtcUzZ8yqffReHGzdn/ajYGmvybmDqQxYWuk2ZSkgynuGmQ8vBBle09s6e17cJchQcQycezEArAv+aiCQihxJhIW3dWOtqBv2VUy7rI49uBRKOf8xgpm6DgxQWi7YvVDLcWGO/GFIvli+H0lZQx537IX71EuB+hFthoPhQWyIV3ZoE+2Sk6nkgY7ps66v1b1mccdWy59gkhuYCqZV5MpP8vAsBKECXvlSuY2T/7duw0jgkhsB4I+GA+0H8hyZE9pluggFrSdU/4FfKM9edFL0o0shih00uUm5KQM1I5QVeufEfHd+ckfnz2rC/91r+gPfWwLUHrEFwF/SnplcSSB7u0FgtNbiwtZXG5I7roEqtsMmH164sHA4JIUsoJmADTzg5qXACZNbAMx1GwQO/qcNAgZk7G0O8GEOsLJbVqJ9OxvkXXOhtm3u/Z4dgn5oRXB6F/vNJwPXLQRGjWuhLSsoWhHEwJkOJO0HJ1cSzHAT1a1Q8liz8i3XrQBefxkQyaECdejhRjEw4fOAnk7CrK4zvs1totpF8HyIRgQxDW3u7UTznBls6ztC66J0Wx+SMrBv' $b1png &= 'V2Xdr48luwbZeHT6Z1u729b3qAvlrooIYJfnRCPqbLwVDZGzdZk6JNuT/VnrbMSFSRj1GRP2Qy38vpEclP200RTPuelfyUHr7gGgcFLeZvxg96kAJQ8y9ezuJqu1nuzDW58lPQ8N+4y8MC57IINFC3Ik5SJnc6Wg4dF/+Wb8UCJ0Y+hIRrDAA1dmO5Ig9v3PQwgmqUzlAUTp1Yc4nDMQTG+dMqJQ+FR+sCRzP1gKCgkmy7rxp+sTuvzvEnO+RaQw94AqP/Q/fR91hhADkDkw6Zxy+b/PjMMU594whAsPmuhDEPNhhuch+Jz0b7lT2F9wYXECAAAAAElFTkSuQmCC' Local $bString = _WinAPI_Base64Decode($b1png) If @error Then Return SetError(1, 0, 0) $bString = Binary($bString) If $bSaveBinary Then Local Const $hFile = FileOpen($sSavePath & "\b1.png", 18) If @error Then Return SetError(2, 0, $bString) FileWrite($hFile, $bString) FileClose($hFile) EndIf Return $bString EndFunc ;==>_b1png 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_Base64Decode0 is opaque, -1 is fully transparent! Edited April 3, 2015 by UEZ 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!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
Lucid Posted April 3, 2015 Author Posted April 3, 2015 Thanks for the code adjustment! It looks to give me the code I need to wrangle with. As for why I want it... I'm adding some buttons that won't normally be used, but that I still want available. So think 1 image instead of 2 in the example you posted. Default = 50%, Hover = 100%, and Pressed = 0%.
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