Transparent background of a TextGadget() over a transparent window?
Transparent background of a TextGadget() over a transparent window?
I understand how to create a transparent window. Is there a way for us to set a TextGadget() to also have transparency too? Just text with no background?
Ignore the arrow in the image below.
My goal is to display a HUD display window over MSFS 2020 with pertinent flight information data like a Real-life airplane does.
Ignore the arrow in the image below.
My goal is to display a HUD display window over MSFS 2020 with pertinent flight information data like a Real-life airplane does.
Re: Transparent background of a TextGadget() over a transparent window?
Code to use to "be tweaked" by a pro:
Code: Select all
Enumeration
#WIN
#RALT
#TORQUE
#IAS
#FONT
EndEnumeration
Procedure ShowWin()
If OpenWindow(#WIN, 0, 0, 400, 200, "Transparent Window",#PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
SetWindowColor(#WIN,#Blue)
SetWindowLong_(WindowID(#WIN), #GWL_EXSTYLE, #WS_EX_LAYERED | #WS_EX_TOPMOST)
SetLayeredWindowAttributes_(WindowID(#WIN),#Blue,0,#LWA_COLORKEY)
If LoadFont(#Font, "Segoe UI", 11)
SetGadgetFont(#PB_Default, FontID(#Font))
EndIf
TextGadget(#RALT, 10, 10,100, 20, "RALT: 2,050")
TextGadget(#TORQUE, 10,100,100, 20, "THQ%: 95%")
TextGadget(#IAS, 290, 10,100, 20, "IAS%: 95kt",#PB_Text_Right)
SetGadgetColor(#RALT, #PB_Gadget_FrontColor,$14DE1F)
SetGadgetColor(#TORQUE,#PB_Gadget_FrontColor,$14DE1F)
SetGadgetColor(#IAS, #PB_Gadget_FrontColor,$14DE1F)
EndIf
EndProcedure
ShowWin()
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_CloseWindow
Quit = 1
EndIf
Until Quit = 1
Re: Transparent background of a TextGadget() over a transparent window?
Not a pro by any means but give this a try:
Code: Select all
Enumeration
#WIN
#RALT
#TORQUE
#IAS
#FONT
EndEnumeration
Procedure ShowWin()
If OpenWindow(#WIN, 0, 0, 400, 200, "Transparent Window",#PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
SetWindowColor(#WIN,#Blue)
SetWindowLong_(WindowID(#WIN), #GWL_EXSTYLE, #WS_EX_LAYERED | #WS_EX_TOPMOST)
SetLayeredWindowAttributes_(WindowID(#WIN),#Blue,0,#LWA_COLORKEY)
If LoadFont(#Font, "Segoe UI", 11)
SetGadgetFont(#PB_Default, FontID(#Font))
EndIf
TextGadget(#RALT, 10, 10,100, 20, "RALT: 2,050")
TextGadget(#TORQUE, 10,100,100, 20, "THQ%: 95%")
TextGadget(#IAS, 300, 10,100, 20, "IAS%: 95kt")
SetGadgetColor(#RALT, #PB_Gadget_FrontColor,$14DE1F)
SetGadgetColor(#RALT, #PB_Gadget_BackColor,#Blue)
SetGadgetColor(#TORQUE,#PB_Gadget_FrontColor,$14DE1F)
SetGadgetColor(#TORQUE, #PB_Gadget_BackColor,#Blue)
SetGadgetColor(#IAS, #PB_Gadget_FrontColor,$14DE1F)
SetGadgetColor(#IAS, #PB_Gadget_BackColor,#Blue)
EndIf
EndProcedure
SystemParametersInfo_(#SPI_SETFONTSMOOTHING,0,0,0) ; turns off font smoothing
ShowWin()
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_CloseWindow
Quit = 1
EndIf
Until Quit = 1
Re: Transparent background of a TextGadget() over a transparent window?
You... My Man... Are brillant!
Thanks for the quick reply, Mate!
Done deal.
Thanks for the quick reply, Mate!
Done deal.
Re: Transparent background of a TextGadget() over a transparent window?
The disadvantage here, however, is again the loss of the edge smoothing of the fonts.
地球上の平和
Re: Transparent background of a TextGadget() over a transparent window?
Hi
Don't play with system parameters
It's very bad practice
Don't play with system parameters
It's very bad practice
Code: Select all
Enumeration
#WIN
#RALT
#TORQUE
#IAS
#FONT
EndEnumeration
Procedure ShowWin()
If OpenWindow(#WIN, 0, 0, 400, 200, "Transparent Window",#PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
SetWindowColor(#WIN,$f0f0f0)
SetWindowLong_(WindowID(#WIN), #GWL_EXSTYLE, #WS_EX_LAYERED | #WS_EX_TOPMOST)
SetLayeredWindowAttributes_(WindowID(#WIN),$f0f0f0,0,#LWA_COLORKEY)
If LoadFont(#Font, "Segoe UI", 12,#PB_Font_HighQuality)
SetGadgetFont(#PB_Default, FontID(#Font))
EndIf
TextGadget(#RALT, 10, 10,100, 20, "RALT: 2,050")
TextGadget(#TORQUE, 10,100,100, 20, "THQ%: 95%")
TextGadget(#IAS, 290, 10,100, 20, "IAS%: 95kt",#PB_Text_Right)
SetGadgetColor(#RALT, #PB_Gadget_FrontColor,$00ff00)
SetGadgetColor(#RALT, #PB_Gadget_BackColor,$f0f0f0)
SetGadgetColor(#TORQUE,#PB_Gadget_FrontColor,$00ff00)
SetGadgetColor(#TORQUE, #PB_Gadget_BackColor,$f0f0f0)
SetGadgetColor(#IAS, #PB_Gadget_FrontColor,$00ff00)
SetGadgetColor(#IAS, #PB_Gadget_BackColor,$f0f0f0)
EndIf
EndProcedure
ShowWin()
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_CloseWindow
Quit = 1
EndIf
Until Quit = 1
Egypt my love
Re: Transparent background of a TextGadget() over a transparent window?
I am so stoked to do my next project! I will be revisiting an older post I made about SimConnect, using PB calls. I will need help with the SimConnect prototypes since it is over my old, thick, head. I will present my questions one prototype call at a time. There are a total of five prototypes that I will need to understand. I have made a successful PB connection with SimConnect, I just need to now get the data I need.
PB Hud display (top-most window code)
Here is a screen print of that code above in action:
https://drive.google.com/file/d/1By5Jq7 ... sp=sharing
Sweet!
PB Hud display (top-most window code)
Code: Select all
Enumeration
#WIN
#RALT
#TORQUE
#IAS
#FONT
#EXIT
EndEnumeration
Procedure ShowWin()
SystemParametersInfo_(#SPI_SETFONTSMOOTHING,0,0,0) ; turns off font smoothing
If OpenWindow(#WIN, 0, 0, 1000, 450, "Daher TBM-930", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
SetWindowPos_(WindowID(#WIN), #HWND_TOPMOST, 0, 0, 0, 0,#SWP_NOACTIVATE | #SWP_NOMOVE | #SWP_NOSIZE)
SetWindowLong_(WindowID(#WIN), #GWL_EXSTYLE, GetWindowLong_(WindowID(#WIN), #GWL_EXSTYLE) | #WS_EX_TOOLWINDOW)
SetWindowColor(#WIN,#Blue)
SetWindowLong_(WindowID(#WIN), #GWL_EXSTYLE, #WS_EX_LAYERED | #WS_EX_TOPMOST)
SetLayeredWindowAttributes_(WindowID(#WIN),#Blue,0,#LWA_COLORKEY)
If LoadFont(#Font, "Segoe UI Bold", 11)
SetGadgetFont(#PB_Default, FontID(#Font))
EndIf
ButtonGadget(#EXIT, WindowWidth(#WIN) - 20,0,20,20,"X")
TextGadget(#RALT, 10, 25,100, 20, "RALT: 25 ft")
TextGadget(#IAS, (WindowWidth(#WIN) / 2) - 50, 25,100, 20, "IAS%: 0kt")
TextGadget(#TORQUE, WindowWidth(#WIN) - 100, 25,100, 20, "THQ%: 5%")
SetGadgetColor(#RALT, #PB_Gadget_FrontColor,$1D8D23)
SetGadgetColor(#RALT, #PB_Gadget_BackColor,#Blue)
SetGadgetColor(#TORQUE, #PB_Gadget_FrontColor,$1D8D23)
SetGadgetColor(#TORQUE, #PB_Gadget_BackColor,#Blue)
SetGadgetColor(#IAS, #PB_Gadget_FrontColor,$1D8D23)
SetGadgetColor(#IAS, #PB_Gadget_BackColor,#Blue)
EndIf
EndProcedure
ShowWin()
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
Quit = #True
Case #PB_Event_Gadget
Select EventGadget()
Case #EXIT
Quit = #True
EndSelect
EndSelect
Until Quit = #True
https://drive.google.com/file/d/1By5Jq7 ... sp=sharing
Sweet!
Re: Transparent background of a TextGadget() over a transparent window?
Very true, Saki. But, on my 4K monitor, as you can see, the font is really not that bad. The font displayed is really no worse than a real-life HUD displays'.
I am satisfied with the results. Have a look at the screenprint I just posted.
Re: Transparent background of a TextGadget() over a transparent window?
I just saw your reply, Rashad.
So that I understand, since I do very much respect your opinion, what am I doing wrong; and can this affect the overall health of the OS while this is running? Windows only, since MSFS 2020 only runs on windows.
Re: Transparent background of a TextGadget() over a transparent window?
Hi HwyStar
If your project is for you only so there is no any problem
But if somebody else will use it after quit he will discover that all the running application has a problem he can't solve
Next is a working snippet see if it will suit you
At the end you should have what you asked for
If your project is for you only so there is no any problem
But if somebody else will use it after quit he will discover that all the running application has a problem he can't solve
Next is a working snippet see if it will suit you
At the end you should have what you asked for
Code: Select all
Enumeration
#WIN
#RALT
#TORQUE
#IAS
#FONT
EndEnumeration
Procedure ShowWin()
If OpenWindow(#WIN, 0, 0, 400, 200, "Transparent Window",#PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
SetWindowColor(#WIN,$00ef00)
SetWindowLong_(WindowID(#WIN), #GWL_EXSTYLE, #WS_EX_LAYERED | #WS_EX_TOPMOST)
SetLayeredWindowAttributes_(WindowID(#WIN),$00ef00,0,#LWA_COLORKEY)
If LoadFont(#Font, "Segoe UI", 12,#PB_Font_HighQuality)
SetGadgetFont(#PB_Default, FontID(#Font))
EndIf
TextGadget(#RALT, 10, 10,100, 20, "RALT: 2,050")
TextGadget(#TORQUE, 10,100,100, 20, "THQ%: 95%")
TextGadget(#IAS, 290, 10,100, 20, "IAS%: 95kt",#PB_Text_Right)
SetGadgetColor(#RALT, #PB_Gadget_FrontColor,$00ff00)
SetGadgetColor(#RALT, #PB_Gadget_BackColor,$00ef00)
SetGadgetColor(#TORQUE,#PB_Gadget_FrontColor,$00ff00)
SetGadgetColor(#TORQUE, #PB_Gadget_BackColor,$00ef00)
SetGadgetColor(#IAS, #PB_Gadget_FrontColor,$00ff00)
SetGadgetColor(#IAS, #PB_Gadget_BackColor,$00ef00)
EndIf
EndProcedure
ShowWin()
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_CloseWindow
Quit = 1
EndIf
Until Quit = 1
Egypt my love