dazza Posted September 7, 2010 Share Posted September 7, 2010 It seems that the SetColor command is just ignored as black is always the outline colour. $k = GUICtrlCreateLabel("", 10, 500, 20, 20, $WS_BORDER) GUICtrlSetColor($k, 0xFF0000) GUICtrlSetBkColor($k, $GUI_BKCOLOR_TRANSPARENT) I am clearly missing something fundamental... and after all these years. I hang my head. Link to comment Share on other sites More sharing options...
Malkey Posted September 7, 2010 Share Posted September 7, 2010 This is one way to draw a border around a control. #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Opt('MustDeclareVars', 1) Example() Func Example() Local $msg, $k GUICreate("My GUI") ; will create a dialog box that when displayed is centered ;GUISetBkColor(0xFFFFE0) $k = GUICtrlCreateLabel("A", 20, 50, 20, 20, 0x201) GUICtrlSetFont(-1, 12, 600) GUICtrlSetColor($k, 0x000080) ; Text colour GUICtrlSetBkColor($k, $GUI_BKCOLOR_TRANSPARENT) GUICtrlCreateGraphic(0, 0, 300, 300) GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFF0000) ; Border colour GUICtrlSetGraphic(-1, $GUI_GR_PENSIZE, 2) GUICtrlSetGraphic(-1, $GUI_GR_RECT, 20 - 2, 50 - 2, 20 + 4, 20 + 4) ; Draw border GUISetState() ; will display an empty dialog box ; Run the GUI until the dialog is closed Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE Return EndFunc ;==>Example Link to comment Share on other sites More sharing options...
dazza Posted September 7, 2010 Author Share Posted September 7, 2010 Many thanks; I can actually ditch the label and just use the graphic. But... I need this red square on top of a jpg (GUICtrlCreatePic) and even though I have created the PIC before the GRAPHIC, the GRAPHIC is hidden by the PIC. Link to comment Share on other sites More sharing options...
Malkey Posted September 8, 2010 Share Posted September 8, 2010 This is an example of a red square on top of a GUICtrlCreatePic() control. ;#include <GUIConstantsEx.au3> ;#include <WindowsConstants.au3> #include <GDIPlus.au3> Opt('MustDeclareVars', 1) Local $msg, $k, $hGraphic, $hPen, $hWnd, $hGraphicGUI, $hBMPBuff Local $sImageFileName = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt", "InstallDir") & "\Examples\GUI\logo4.gif" $hWnd = GUICreate("My GUI", 300, 300) ;GUISetBkColor(0xFFFFE0) $k = GUICtrlCreatePic($sImageFileName, 20, 50, 169, 68) _GDIPlus_Startup() $hGraphicGUI = _GDIPlus_GraphicsCreateFromHWND($hWnd) ; Graphics of GUI $hBMPBuff = _GDIPlus_BitmapCreateFromGraphics(300, 300, $hGraphicGUI); $hBMPBuff is a bitmap in memory $hGraphic = _GDIPlus_ImageGetGraphicsContext($hBMPBuff) ; Graphics of memory bitmap $hPen = _GDIPlus_PenCreate(0xC4FF0000, 3) _GDIPlus_GraphicsDrawRect($hGraphic, 15, 45, 20, 20, $hPen) ; Draw to memory bitmap GUISetState() ; Run the GUI until the dialog is closed Do _GDIPlus_GraphicsDrawImage($hGraphicGUI, $hBMPBuff, 0, 0) ; Draw memory bitmap to GUI $msg = GUIGetMsg() Until $msg = -3 ; $GUI_EVENT_CLOSE _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() Link to comment Share on other sites More sharing options...
dazza Posted September 8, 2010 Author Share Posted September 8, 2010 Aye karumba! What a load of work to just get a red outlined square. Many thanks Malkey. Maybe the boffins at AutoIT could just fix the GUICtrlSetColor function. Over and out. 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