短缺问题:如何使用wxpython在图标(不是位图)上绘制非透明文本?
我知道如何画上wx.Bitmap文本,但我怎么可以借鉴在wxPython一个wx.Icon文本,以便它不会出现透明?
长的问题:
我有一个基于wxPython的GUI应用程序,有一个任务栏图标,这是我设置使用mytaskbaricon.SetIcon("myicon.ico")
。
现在我想动态地在图标上放一些文字,所以我试图用wx .DrawText
方法解释here。这个工作正常,如果我测试这个位图(我在菜单项中使用)。
但是,任务栏需要wxIcon而不是wxBitmap。所以我想我会将图标转换为位图,绘制文本,然后将其转换回图标。这工作,除了文本是没有显示透明。为什么?我怎样才能使文本不透明?
我的代码大致如下:
import wx
class MyTaskBarIcon(wx.TaskBarIcon):
...
icon = wx.Icon("myicon.ico", wx.BITMAP_TYPE_ICO)
bmp = wx.Bitmap("myicon.ico", wx.BITMAP_TYPE_ICO)
memDC = wx.MemoryDC()
memDC.SetTextForeground(wx.RED)
memDC.SelectObject(bmp)
memDC.DrawText("A", 0, 0)
icon.CopyFromBitmap(bmp)
self.SetIcon(icon, APP_NAME_WITH_VERSION)
...
因此,没有提出任何错误,myicon.ico显示,但字母A是TRANSPARANT(而不是红色)。如果我使用.bmp文件以(myicon.bmp
)开头,文本将以正确的颜色显示(但边框锯齿状)。我玩过口罩,前景色和背景色,但这并没有帮助。
(我使用的是Windows 7,Python 2.6中,wxPython的2.8)
编辑:我已经缩短我的解释,并提出了代码更加自足
这的确是这样,非常好的解决方法,并感谢很多复制粘贴代码!如果在几天内没有更好的解决方案,赏金就是你的 – Rabarberski 2011-05-27 15:46:43