短缺問題:如何使用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