2

更新我完全改写了这个问题

我想创建一个带圆角的窗口,它也是半透明的。

我设法通过调用该方法使框架半透明SetTransparent( alpha ),但是,我仍然不知道如何使窗口没有背景。

我试图获取窗口的设备上下文(dc)并将背景画笔设置为,wx.TRANSPARENT_BRUSH但这似乎没有任何效果。

例如,我正在寻求一种与此类似的效果,但我想在不使用位图的情况下进行(即没有任何外部媒体文件)。

如何将背景设置为空?

更新:

看来我想要的是所谓的“异形窗”。我正在进一步研究但问题仍然是:如何在不使用任何外部媒体文件的情况下制作一个(即纯粹在代码中)。

4

3 回答 3

4

令人惊讶的是没有人给出答案..

是的,正如 FogleBird 所说,它已经完成了SetShape,但问题是如何在不使用图像文件的情况下获得圆形矩形的形状。

我找到了一种方法,即创建一个空位图并使用内存 dc 在其上绘制一个圆角矩形

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) )

我发现的一个问题是形状是安静的别名。不完全是一个漂亮/花哨的窗口,但总比没有好。

于 2009-04-14T16:05:16.423 回答
0

您需要 SetShape 方法。

http://docs.wxwidgets.org/stable/wx_wxtoplevelwindow.html#wxtoplevelwindowsetshape

于 2009-04-14T02:31:15.493 回答
0

查看 wxWidgets\samples\shape (在 wxWidget 中),它显示了一个起始形状的窗口。

于 2010-02-09T08:24:18.253 回答