Transparent Window Backgrounds
BlitzMax Forums/Brucey's Modules/Transparent Window Backgrounds
| ||
| Hello, I have recently been messing around with customized windows on Mac OS. A good example is found on the apple development website: http://developer.apple.com/samplecode/RoundTransparentWindow/index.html However I seem to have stumbled into a small problem while using wxMax. While the window backgound colour can be set, I have been unable to clear it entirely. Is this possible within wxMax? I have been able to, crudely, hack this functionality into MaxGUI using the following functions inserted after a window is created (within NSInitGadget, cocoa.macos.m): [window setOpaque:NO]; [window setBackgroundColor: [NSColor clearColor]]; [window setHasShadow: YES]; But I am at a loss as where to include them within the wxMax module for a similar effect. Any insight into this matter would be greatly appreciated. |
| ||
Is this what you are after?SuperStrict Framework wx.wxApp Import wx.wxFrame New MyApp.Run() Type MyApp Extends wxApp Method OnInit:Int() Local sim:Simple = Simple(New Simple.Create(Null, wxID_ANY, .. "Simple", -1, -1, 250, 150)) ' set alpha transparency sim.SetTransparent(128) sim.Show(True) Return True End Method End Type Type Simple Extends wxFrame Method OnInit() Centre() End Method End Type |
| ||
| Not quite, while the transparency is exactly what I am after, the background colour itself remains and the effect covers any image that is drawn to it. This is a quick example (replace circle.png with an alpha enabled png):
SuperStrict
Framework wx.wxApp
Import wx.wxFrame
Import wx.wxImage
New MyApp.Run()
Type MyApp Extends wxApp
Method OnInit:Int()
wxImage.AddHandler(New wxPNGHandler)
Local txt:Example = Example(New Example.Create(Null, wxID_ANY, ..
"Example", -1, -1, 300, 300))
txt.Show(True)
Return True
End Method
End Type
Type Example Extends wxFrame
Method OnInit()
ConnectAny(wxEVT_PAINT, OnPaint)
Centre()
SetTransparent(100)
End Method
Function OnPaint(event:wxEvent)
Local dc:wxPaintDC = New wxPaintDC.Create(wxWindow(event.parent))
Local m_Image2:wxImage = wxImage.CreateFromFile("circle.png", wxBITMAP_TYPE_PNG)
dc.DrawBitmap(wxBitmap.CreateFromImage(m_Image2),0,0,True)
dc.Free()
End Function
End Type What I am aiming for is a Opaque image drawn to the window, with the desktop shown in the background and the areas where the image has alpha. |
| ||
| Okay... I think I'm getting the hang of it now... How's about : and supporting image... ![]() And, here's a zip of the above two files for convenience : shape_example.zip Left-click and drag.... Cmd-Q to quit... Just the basics. You will need to update your wxMax to the latest in SVN, for a wee fix/update to wxRegion. And apologies for the purple haze around the edge of the donut... I just threw it all together 10 mins ago. :-) |
| ||
| Main caveat is of course a lack of Alpha support... Not sure if it can do it this way, since it's Carbon, not Cocoa.. |
| ||
| Yay! A shaped frame demo... |
