wxpython-工具栏上位图上的颜色未出现
wxpython- Color on Bitmap on toolbar not appearing
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
Clear(self)
Clears the device context using the current background brush.
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
Clear(self) Clears the device context using the current background brush.