Python wx.StaticBitmap-简单透明(遮罩、png、bmp?)
在持续失败1周后,我仍然无法完成一项简单的任务:加载带有alpha通道或白色背景的png(在下面的示例中),并使其在wx.StaticBitmap中保持透明度 这是我以后在wx.panel中需要的。它应该保持这样或类似的状态 这是我的方法之一(白色背景): 关于这个话题我读了很多书。我是垃圾。很抱歉我想我错过了一些明显的东西 更新: 我通过发现的示例成功地做到了这一点: 这是从带有alpha通道的PNG创建透明的wx.image,但在wx.StaticBitmap中,透明度应该是黑色的。这让我发疯!!!救命啊 如果我能在wx.panel中以正确的透明度显示该图像就好了Python wx.StaticBitmap-简单透明(遮罩、png、bmp?),python,python-2.7,wxpython,png,Python,Python 2.7,Wxpython,Png,在持续失败1周后,我仍然无法完成一项简单的任务:加载带有alpha通道或白色背景的png(在下面的示例中),并使其在wx.StaticBitmap中保持透明度 这是我以后在wx.panel中需要的。它应该保持这样或类似的状态 这是我的方法之一(白色背景): 关于这个话题我读了很多书。我是垃圾。很抱歉我想我错过了一些明显的东西 更新: 我通过发现的示例成功地做到了这一点: 这是从带有alpha通道的PNG创建透明的wx.image,但在wx.StaticBitmap中,透明度应该是黑色的。这让我发
谢谢社区 如python SO聊天中所述:
class MyPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.loc = wx.Bitmap("intro/image.png")
def OnPaint(self, evt):
dc = wx.PaintDC(self)
dc.SetBackground(wx.Brush("WHITE"))
# ... drawing here all other images in order of overlapping
dc.DrawBitmap(self.loc, 0, 0, True)
诀窍是用wx.PaintDC
绘制所有重叠的图像
此外,使用
wx.Bitmap
而不是wx.Image(…,wx.Bitmap_TYPE_PNG).ConvertToBitmap()
从文件系统加载PNG更方便。如python SO聊天中所述:
class MyPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.loc = wx.Bitmap("intro/image.png")
def OnPaint(self, evt):
dc = wx.PaintDC(self)
dc.SetBackground(wx.Brush("WHITE"))
# ... drawing here all other images in order of overlapping
dc.DrawBitmap(self.loc, 0, 0, True)
诀窍是用wx.PaintDC
绘制所有重叠的图像
此外,使用
wx.Bitmap
而不是wx.Image(…,wx.Bitmap_TYPE_PNG).ConvertToBitmap()
从文件系统加载PNG更方便。非常感谢您花时间找到了我理解并成功实现的解决方案!非常感谢。我得到这个错误:<代码> Wx..Cy.WXRealEdrrist: C++断言“ISOK())在/tMP/PIP上建立Nujnbmg/WxPython/Ext/WxWistG/Src/Posi/DCGrase.CPP(437)在SETTeXBeBeLead中():WxGCDC(CG)::SETTATEL背景-无效的DC < /代码>☹我非常感谢您花时间找到了我确实理解并成功实施的解决方案!非常感谢。我得到这个错误:<代码> Wx..Cy.WXRealEdrrist: C++断言“ISOK())在/tMP/PIP上建立Nujnbmg/WxPython/Ext/WxWistG/Src/Posi/DCGrase.CPP(437)在SETTeXBeBeLead中():WxGCDC(CG)::SETTATEL背景-无效的DC < /代码>☹
class MyPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.loc = wx.Bitmap("intro/image.png")
def OnPaint(self, evt):
dc = wx.PaintDC(self)
dc.SetBackground(wx.Brush("WHITE"))
# ... drawing here all other images in order of overlapping
dc.DrawBitmap(self.loc, 0, 0, True)