【发布时间】:2012-07-30 19:01:19
【问题描述】:
现在,我正在设置这样的背景颜色,
dc.DrawRectangle(0,0,width,height)
您知道设置背景颜色的更好方法吗?
【问题讨论】:
-
你现在做的有什么问题?
-
我希望有更好的方法。
-
背景色到底需要改什么?分享您的研究对每个人都有帮助。告诉我们您发现了什么以及为什么它不能满足您的需求。
现在,我正在设置这样的背景颜色,
dc.DrawRectangle(0,0,width,height)
您知道设置背景颜色的更好方法吗?
【问题讨论】:
如果您已经在wx.DC 上绘画以绘制窗口的其余内容,那么最好的方法是设置背景画笔,然后清除 DC。像这样的:
def OnPaint(self, event):
dc= wx.PaintDC(self)
dc.SetBackground(wx.Brush(someColour))
dc.Clear()
# other drawing stuff...
如果您使用窗口的SetBackgroundColour 方法设置颜色,那么您可以使用它而不是一些固定的颜色值,如下所示:
def OnPaint(self, event):
dc= wx.PaintDC(self)
dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
dc.Clear()
# other drawing stuff...
【讨论】:
dc.Clear 用背景画笔填充整个 DC,这是 OP 在主要问题中暗示他想要做的事情:“...用 wx.DC 设置背景颜色”,假设宽度和高度是 DC 的大小。他的方法是新手常用的清除DC的方法,使用dc.Clear是他正在寻找的更好的方法。
适用于大多数窗口(包括按钮和其他小部件)的正常方法是调用 wxWindow::SetBackgroundColour()
http://docs.wxwidgets.org/2.8/wx_wxwindow.html#wxwindowsetbackgroundcolour
巧妙的是,如果您在最顶层的父级上调用它,所有子级将自动继承相同的背景颜色。请参阅链接以了解其具体工作原理。
【讨论】: