IanN1990 Posted February 3, 2019 Share Posted February 3, 2019 (edited) Hi All, I discovered today having the color #F0F0F0 within a image causes it become transparent. #NoTrayIcon #include <GUIConstantsEx.au3> GUICreate("AutoIt Test", 500, 500) GUISetBkColor(0xE0FFFF) GUICtrlCreatePic(@ScriptDir & "\Test.bmp", 0, 0, 500, 500) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd From other code that makes a GUI transparent _WinAPI_SetLayeredWindowAttributes() it needs to match a color, so this does make sense. This also explains why in the helpfile for GUICtrlCreatePic() it says; "The background is always set to transparent. GUICtrlSetBkColor() has no effect on pic control." Just wanted to double check this is more a feature then bug test.bmp Edited February 3, 2019 by IanN1990 argumentum 1 Link to comment Share on other sites More sharing options...
argumentum Posted February 3, 2019 Share Posted February 3, 2019 (edited) I've tested your code with you image and shows no such effect ( AutoIt v3.3.14.5 ) Yes, the image shows as of a transparent image. PS: ..and the behavior shows on every version of AutoIt3 ( tested all the way back to v3.2.0.1 ). Edited February 3, 2019 by argumentum I was wrong Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting. Link to comment Share on other sites More sharing options...
IanN1990 Posted February 3, 2019 Author Share Posted February 3, 2019 (edited) You had me doubting then! I am running v3.3.14.2 on Windows 7 Pro (and tested on windows 8). I also discovered for this effect to happen the image must not be resized. The main reason i am asking is because i am thinking of replacing my current transparency code for this instead. As then it doesn't require GDIPlus, is fewer lines and seems to display it better (no outline). Current Version #NoTrayIcon #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <winapi.au3> #include <GDIPlus.au3> $STM_SETIMAGE = 0x0172 _GDIPlus_Startup() $hGui = GUICreate("AutoIt Test", 241, 60, -1, -1, $WS_POPUP, $WS_EX_LAYERED) GUISetBkColor(0x000000) $hPic = GUICtrlCreatePic("", 0, 0, 241, 60) $hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\test.png") $hBitmap = _GDIPlus_BitmapCloneArea($hImage, 0, 0, 241, 60, $GDIP_PXF32ARGB) $hBmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap) _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_ImageDispose($hImage) GUICtrlSendMsg($hPic, $STM_SETIMAGE, 0, $hBmp) _WinAPI_DeleteObject($hBmp) _WinAPI_SetLayeredWindowAttributes($hGui, 0x000000, 255) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE _GDIPlus_Shutdown() ExitLoop EndSwitch WEnd Proposed version #NoTrayIcon #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <winapi.au3> $hGui = GUICreate("AutoIt Test", 241, 60, -1, -1, $WS_POPUP, $WS_EX_LAYERED) GUISetBkColor(0x000000) GUICtrlCreatePic(@ScriptDir & "\test.bmp", 0, 0, 241, 60) GUISetState() _WinAPI_SetLayeredWindowAttributes($hGui, 0x000000, 255) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd test.bmp Edited February 3, 2019 by IanN1990 argumentum 1 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