【问题标题】:How to make wxPython, DC background transparent?如何让wxPython、DC背景透明?
【发布时间】:2012-03-16 01:20:22
【问题描述】:

如何使默认的白色 DC 背景变得不可见(透明)?

运行以下示例,它在按钮上显示白色背景。我想删除 DC 的白色背景。 (只显示红色 X)

import wx


class drawover(wx.Window):
    def __init__(self, parent):
        wx.Window.__init__(self, parent)


        self.Bind(wx.EVT_PAINT, self.OnPaint)
        self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnErase)
        self.Bind(wx.EVT_SET_FOCUS, self.OnFocus)


    def OnFocus(self, evt):
        self.GetParent().SetFocus()


    def OnErase(self, evt):
        pass


    def OnPaint(self, evt):
        dc = wx.PaintDC(self)
        dc.BeginDrawing()
        dc.SetPen(wx.Pen("RED", 1))
        dc.DrawLineList([(0,0,100,100), (100,0,0,100)])
        dc.EndDrawing()


class frame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, size=(600,600))


        s = wx.BoxSizer(wx.VERTICAL)


        self.tc1 = wx.TextCtrl(self, style=wx.TE_MULTILINE)
        s.Add(self.tc1, 1, wx.EXPAND)
        self.tc2 = wx.Button(self)
        s.Add(self.tc2, 1, wx.EXPAND)


        self.d = drawover(self.tc2)


        self.tc2.Bind(wx.EVT_SIZE, self.OnSize2)


        self.SetSizer(s)
        self.Layout()


    def OnSize2(self, evt):
        self.d.SetSize((101,101))


if __name__ == '__main__':
    a = wx.App(0)
    b = frame()
    b.Show(1)
    a.MainLoop()

【问题讨论】:

    标签: c++ python wxpython wxwidgets


    【解决方案1】:

    http://wiki.wxpython.org/Transparent%20Frames

    如果您在 Windows 上,请参见上方。

    如果不是,您基本上必须将其下方的帧捕获为图像并绘制(在您的 onpaint 中)以伪造它

    另见 http://wxpython-users.1045709.n5.nabble.com/Transparent-Panels-td2303275.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      • 2012-04-15
      • 2013-09-27
      • 1970-01-01
      相关资源
      最近更新 更多