【问题标题】:wxpython- Color on Bitmap on toolbar not appearingwxpython-工具栏上位图上的颜色未出现
【发布时间】:2021-07-30 09:21:32
【问题描述】:
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'}选择颜色选项列表中指定的其他颜色。 您可以在此处查看代码如何工作的图像

【问题讨论】:

    标签: python wxpython


    【解决方案1】:

    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 
    

    清除(自己) 使用当前背景画笔清除设备上下文。

    【讨论】:

    • 感谢@Rolf,它确实有效。但我仍然想知道直流操纵部分的问题。它也给出了其他程序中的问题
    • 谢谢@Rolf,它现在正在工作。使用 dc.Clear() 来清除当前背景的设备上下文确实很有效。
    • @UtkarshSingh 乐于助人,欢迎来到 StackOverflow - stackoverflow.com/help/someone-answers
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多