AndyK 0 Posted June 17, 2011 (edited) Im trying to create something similar to an image map. Green or red boxes (representing computers) will be displayed on top of an image, and when you click on them, information on that computer will come . I can get it to work with a Pic control and Graphic control, but I would like to have the ability to use PNG files... My attempt at using GDI does not work... Any advice on how to fix it would be awesome... expandcollapse popup#include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GDIPlus.au3> #Include <WinAPI.au3> _GDIPlus_StartUp() $hImage = _GDIPlus_ImageLoadFromFile("C:\Users\user\Pictures\untitled.png") $iX = _GDIPlus_ImageGetWidth($hImage) $iY = _GDIPlus_ImageGetWidth($hImage) ; Window handle $hWnd = GUICreate("Image Map", $iX, $iY) GUISetState(@SW_SHOW, $hWnd) $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd) _GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage, 0, 0, $iX, $iY) ; Define brush colors $bGreen = 0x33FFAA $bRed = 0xFF3300 ; Clickable control 1 $gph = GUICtrlCreateGraphic(0, 0, 15, 15) GUICtrlSetState(-1, $GUI_ONTOP) GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $bGreen, $bGreen) GUICtrlSetGraphic($gph, $GUI_GR_RECT, 0, 0, 15, 15) ; Clickable control 2 $gph2 = GUICtrlCreateGraphic(200, 60, 15, 15) GUICtrlSetState(-1, $GUI_ONTOP) GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $bRed, $bRed) GUICtrlSetGraphic($gph2, $GUI_GR_RECT, 0, 0, 15, 15) ; Background picture - Uncomment this to make it work properly. ;$Pic1 = GUICtrlCreatePic("C:\Users\user\Pictures\untitled.gif", 0, 0, 0, 0, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;GUICtrlSetState(-1, @SW_DISABLE) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $gph _My_Func1() Case $gph2 _My_Func2() EndSwitch WEnd ; Clean up resources _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_ImageDispose($hImage) _GDIPlus_ShutDown() Func _My_Func1() ; Place holder currently. MsgBox(0, "Graphic 1", "You have clicked graphic #1.") EndFunc Func _My_Func2() ; Place holder currently. MsgBox(0, "Graphic 2", "You have clicked graphic #2.") EndFunc Edited June 17, 2011 by AndyK Share this post Link to post Share on other sites
guinness 1,518 Posted June 17, 2011 Does this work? expandcollapse popup#include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GDIPlus.au3> #Include <WinAPI.au3> _GDIPlus_StartUp() $hImage = _GDIPlus_ImageLoadFromFile("C:\Users\StudioLaptop\Desktop\Desktop\Au3DB\Data\Misc\RecentMenu\Example 1.png") $iX = _GDIPlus_ImageGetWidth($hImage) $iY = _GDIPlus_ImageGetWidth($hImage) ; Window handle $hWnd = GUICreate("Image Map", $iX, $iY) GUISetState(@SW_SHOW, $hWnd) $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd) _GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage, 0, 0, $iX, $iY) ; Define brush colors $bGreen = 0x33FFAA $bRed = 0xFF3300 ; Clickable control 1 $gph = GUICtrlCreateLabel("",0, 0, 15, 15) GUICtrlSetBkColor(-1, $bRed) ; Clickable control 2 $gph2 = GUICtrlCreateLabel("", 200, 60, 15, 15) GUICtrlSetBkColor(-1, $bGreen) ; Background picture - Uncomment this to make it work properly. ;$Pic1 = GUICtrlCreatePic("C:\Users\user\Pictures\untitled.gif", 0, 0, 0, 0, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;GUICtrlSetState(-1, @SW_DISABLE) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $gph _My_Func1() Case $gph2 _My_Func2() EndSwitch WEnd ; Clean up resources _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_ImageDispose($hImage) _GDIPlus_ShutDown() Func _My_Func1() ; Place holder currently. MsgBox(0, "Graphic 1", "You have clicked graphic #1.") EndFunc Func _My_Func2() ; Place holder currently. MsgBox(0, "Graphic 2", "You have clicked graphic #2.") EndFunc I would highly recommend looking at Zedna's Resources UDF and the Function _SetBitmapToCtrl() to set an Image to a Control, because at present when you minimise the GUI and restore the GUI is "re-painted." You could also look at these Example too >> UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Share this post Link to post Share on other sites
AndyK 0 Posted June 17, 2011 I would highly recommend looking at Zedna's Resources UDF and the Function _SetBitmapToCtrl() to set an Image to a Control, because at present when you minimise the GUI and restore the GUI is "re-painted." You could also look at these Example too >> Hadn't seen those functions as of yet but they look very helpful. Theoretically, using the resource functions I could load a PNG as a bitmap, then use the _SetBitmapToCtrl() to set the picture control as the loaded image? This would then allow the pic control to be repainted properly after it's been minimized? Share this post Link to post Share on other sites
guinness 1,518 Posted June 17, 2011 (edited) If you use Resources.au3 for _SetBitmapToCtrl() then I would do it like this >> You can see I have a custom Function called _GUICtrlSetImage(). Example: #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include "Resources.au3" ; http://www.autoitscript.com/forum/topic/51103-resources-udf/ _Main() Func _Main() Local $hGUI, $iLabel $hGUI = GUICreate("_GUICtrlSetImage()", 300, 300) $iLabel = GUICtrlCreateLabel("", 0, 0, 64, 64) GUISetState(@SW_SHOW, $hGUI) _GDIPlus_Startup() _GUICtrlSetImage($iLabel, "Example.png") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE _GDIPlus_Shutdown() Exit EndSwitch WEnd EndFunc ;==>_Main Func _GUICtrlSetImage($iControlID, $sImageFile) Local $hBitmap, $hImage, $hDC $hImage = _GDIPlus_ImageLoadFromFile($sImageFile) $hDC = _WinAPI_GetDC(0) _WinAPI_CreateCompatibleDC($hDC) $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) GUICtrlSetImage($iControlID, "") Return _SetBitmapToCtrl($iControlID, $hBitmap) EndFunc ;==>_GUICtrlSetImage This would then allow the pic control to be repainted properly after it's been minimized?It wouldn't disappear correct! Edited June 17, 2011 by guinness UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Share this post Link to post Share on other sites
guinness 1,518 Posted June 17, 2011 Edit: You might also want to use this >> UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Share this post Link to post Share on other sites
UEZ 1,278 Posted June 17, 2011 You can load PNGs using GDI+ and sending it to a pic control. Something like that: expandcollapse popup#include <GUIConstantsEx.au3> #include <GDIPlus.au3> Opt("GuiOnEventMode", 1) Local Const $STM_SETIMAGE = 0x0172 Local $hGUI, $Pic, $hImage, $hBmp, $iW, $iH _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile("..\..\Images\Folder Full Tranparent.png") $iW = _GDIPlus_ImageGetWidth($hImage) $iH = _GDIPlus_ImageGetHeight($hImage) $hBmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) ;~ _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_ImageDispose($hImage) _GDIPlus_Shutdown() $hGUI = GUICreate("Test", $iW * 2, $iH * 2) GUISetBkColor(0xFFFFFF) GUISetOnEvent($GUI_EVENT_CLOSE, "_Quit") $Pic = GUICtrlCreatePic("", $iW / 2, $iH / 2, $iW, $iH) ;~ GUICtrlSetState(-1, $GUI_DISABLE) _WinAPI_DeleteObject(GUICtrlSendMsg($Pic, $STM_SETIMAGE, 0, $hBmp)) GUICtrlSetOnEvent($Pic, "_Pic_Clicked") _WinAPI_DeleteObject($hBmp) GUISetState() Do Until Not Sleep(1000) Func _Pic_Clicked() MsgBox(0, "Test", "You clicked on the pic!") EndFunc Func _Quit() GUIDelete($hGUI) Exit EndFunc Just change the path to the PNG image. Br, 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!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Share this post Link to post Share on other sites