【问题标题】:wxImage has no alpha channel on win32wxImage 在 win32 上没有 alpha 通道
【发布时间】:2012-06-13 11:03:44
【问题描述】:

我有一个绘制渐变文本的功能,在 mac 上效果很好,但在 windows 上不能正常工作。

我把它放在一个可运行的例子中:

import wx

def get_gradient_text_solid_bg(text,point_size,top_colour,bottom_colour,bg_colour_tuple):
    dc=wx.MemoryDC()
    f= dc.GetFont()
    f.SetPointSize(point_size)
    dc.SetFont(f)
    dc.SelectObject(wx.EmptyBitmap(0,0))
    w,h= dc.GetTextExtent(text)
    template_bmp= wx.EmptyBitmap(w,h)
    dc.SelectObject(template_bmp)
    dc.SetBackground(wx.Brush(wx.WHITE))
    dc.Clear()
    dc.DrawText(text,0,0)
    dc.SelectObject(wx.NullBitmap)
    template_image= template_bmp.ConvertToImage()
    template_image.ConvertColourToAlpha(*bg_colour_tuple)
    template_bmp= template_image.ConvertToBitmap()
    text_bmp= wx.EmptyBitmap(w,h)
    dc.SelectObject(text_bmp)
    dc.GradientFillLinear((0,0,w,h),top_colour,bottom_colour,wx.SOUTH)
    dc.DrawBitmap(template_bmp,0,0)
    dc.SelectObject(wx.NullBitmap)
    return text_bmp

class Frame(wx.Frame):
    def __init__(self,*args,**kwargs):
        wx.Frame.__init__(self,*args,**kwargs)
        panel= wx.Panel(self)
        bg_colour= (237,237,237)
        panel.SetBackgroundColour(wx.Colour(*bg_colour))
        wx.StaticBitmap(panel,bitmap=get_gradient_text_solid_bg("Testing",30,(255,80,80),(255,215,215),bg_colour))
        self.Show()

if __name__ == "__main__":
    app= wx.App(False)
    Frame(None)
    app.MainLoop()

我不确定它为什么不工作,我认为这是因为 wxImage 在 Windows 上似乎没有 alpha 通道,但你可以在文本中看到一些红色,所以我认为边缘的图像中必须有一些 alpha(抗锯齿部分),所以这可能是 Windows 上的 ConvertColourToAlpha 的问题?我怎样才能让它在 Windows 上显示相同?

【问题讨论】:

    标签: python image wxpython


    【解决方案1】:

    在 wxPython-users 列表中有几个关于这个主题的主题。这是one,可能与您相关。还有更多 one 给你。

    【讨论】:

    • 嗨,迈克,感谢您的回复,但仍不完全确定如何在 Windows 上解决此问题。我认为这与图像中的 alpha 没有太大关系,而是ConvertColourToAlpha 没有将 alpha 放在字符主体中的问题。您是否建议使用与其他模块不同的 DC?
    • +1 顺便说一句,这些链接真的很有帮助,帮助我解决了我遇到的另一个问题
    【解决方案2】:

    我在 Robin 的帮助下找到了解决方案。

    这是 C++ 的一个错误,我在 wxpython 错误跟踪器上创建了一个跟踪器,但解决方法是将位深度设置为 24 text_bmp= wx.EmptyBitmap(w,h,24)

    【讨论】:

      猜你喜欢
      • 2019-01-03
      • 2013-03-19
      • 2015-03-12
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 2010-12-30
      • 2019-06-12
      • 1970-01-01
      相关资源
      最近更新 更多