gpt4 book ai didi

c++ - 如何使wxPython、DC背景透明?

转载 作者:太空狗 更新时间:2023-10-29 21:48:55 28 4
gpt4 key购买 nike

如何让默认的白色 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()

最佳答案

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

如果您在 Windows 上,请参阅上面的内容。

如果不是,你基本上必须捕捉它下面的帧作为图像并绘制它(在你的 onpaint 中)以伪造它

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

关于c++ - 如何使wxPython、DC背景透明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9730585/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com