Python wx.StaticBitmap-简单透明(遮罩、png、bmp?)

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中,透明度应该是黑色的。这让我发

在持续失败1周后,我仍然无法完成一项简单的任务:加载带有alpha通道或白色背景的png(在下面的示例中),并使其在wx.StaticBitmap中保持透明度

这是我以后在wx.panel中需要的。它应该保持这样或类似的状态

这是我的方法之一(白色背景):

关于这个话题我读了很多书。我是垃圾。很抱歉我想我错过了一些明显的东西

更新:

我通过发现的示例成功地做到了这一点:

这是从带有alpha通道的PNG创建透明的wx.image,但在wx.StaticBitmap中,透明度应该是黑色的。这让我发疯!!!救命啊

如果我能在wx.panel中以正确的透明度显示该图像就好了
谢谢社区

如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)