问题描述
def createColorTool(self,toolbar,color):
bmp = self.MakeBitmap(color)
newId = wx.NewId()
label=''
tool = toolbar.AddRadioTool(newId,label,bmp,shortHelp=color)
self.Bind(wx.EVT_MENU,self.OnColor,tool)
def MakeBitmap(self,color):
bmp= wx.EmptyBitmap(16,15)
dc = wx.MemoryDC()
dc.SelectObject(bmp)
dc.SetBackground(wx.Brush(color))
dc.SelectObject(wx.NullBitmap)
return bmp
颜色属性从颜色列表中获取颜色 {'black','blue','green'} 问题是程序工作正常,但对于位图,在工具栏中,只显示黑色而不显示任何颜色选择颜色选项列表中指定的其他颜色。 您可以在此处查看代码工作方式的图像
解决方法
我对 DC
的操作迷失了方向,所以这里有一个替代方案。
这假设 color
是 wx.Colour
例如wx.Colour(0,155,255,alpha=255)
def MakeBitmap(self,color):
bmp = wx.Bitmap.FromRGBA(16,15,color.red,color.green,color.blue,color.alpha)
return bmp
在下方创建绿色方块
编辑:
您的代码设置了背景画笔但不使用它。
所以你正在返回裸骨位图。
如果您必须使用 dc
,请尝试以下操作:
def MakeBitmap(self,color):
bmp = wx.Bitmap(16,15)
dc = wx.MemoryDC(bmp)
dc.SetBackground(wx.Brush(color))
dc.Clear()
return bmp
或:
def MakeBitmap(self,color):
bmp= wx.Bitmap(16,15)
dc = wx.MemoryDC()
dc.SelectObject(bmp)
dc.SetBackground(wx.Brush(color))
dc.Clear()
return bmp
清除(自我) 使用当前背景画笔清除设备上下文。