【问题标题】:How to draw a transparent frame in wxpython如何在 wxpython 中绘制透明框架
【发布时间】:2010-10-18 23:11:12
【问题描述】:

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

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

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

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

我正在寻找一种类似于this 的效果,但我想不使用位图(即不使用任何外部媒体文件)。

如何将背景设置为空?

更新:

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

【问题讨论】:

    标签: wxpython wxwidgets transparent shaped-window


    【解决方案1】:
    【解决方案2】:

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

    是的,正如 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) )
    

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-03
        • 1970-01-01
        • 1970-01-01
        • 2011-01-10
        • 2010-09-13
        • 2013-09-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多