更新我完全改写了问题
我想创建一个圆角的窗口,这也是半透明的。
我设法通过调用SetTransparent( alpha )
方法使框架半透明,但是,我仍然不知道如何使窗口没有背景。
我试图获取窗口的设备上下文(dc)并将背景画笔设置为wx.TRANSPARENT_BRUSH
,但这似乎没有任何效果。
我正在寻求一种类似于this的效果,但我想在不使用位图的情况下(即没有任何外部媒体文件)这样做。
如何将背景设置为空?
答案 0 :(得分:3)
令人惊讶的是,没有人给出答案..
是的,正如FogleBird所说,它是用SetShape
完成的,但问题是如何在不使用图像文件的情况下获得一个曲面矩形的形状。
我找到了一种方法,即创建一个空位图,并使用内存直流在其上绘制一个圆角矩形
def GetRoundBitmap( w, h, radius ):
maskColor = wx.Color(0,0,0)
shownColor = wx.Color(5,5,5)
b = wx.EmptyBitmap(w,h)
dc = wx.MemoryDC()
dc.SelectObject(b)
dc.SetBrush(wx.Brush(maskColor))
dc.DrawRectangle(0,0,w,h)
dc.SetBrush(wx.Brush(shownColor))
dc.DrawRoundedRectangle(0,0,w,h,radius)
dc.SelectObject(wx.NullBitmap)
b.SetMaskColour(maskColor)
return b
def GetRoundShape( w, h, r ):
return wx.RegionFromBitmap( GetRoundBitmap(w,h,r) )
我发现的一个问题是形状是安静的别名。不是一个漂亮/奇特的窗户,但总比没有好。
答案 1 :(得分:0)
答案 2 :(得分:0)
查看wxWidgets \ samples \ shaped(在wxWidget中),它显示一个开始形状的窗口。