question courte:Comment dessiner du texte non transparent sur une icône (pas un bitmap) en utilisant wxpython?
Je sais comment dessiner un texte sur wx.Bitmap, mais comment puis-je tirer du texte sur une wx.Icon dans wxpython de sorte qu'il ne semble pas transparent?
longue question:
J'ai une application GUI basée sur wxpython, qui a une icône de la barre des tâches, que je mets à l'aide mytaskbaricon.SetIcon("myicon.ico")
.
Maintenant, je voudrais mettre dynamiquement un texte sur l'icône, alors j'ai essayé d'utiliser la méthode WX .DrawText
comme expliqué here .Cette fonctionne très bien si je teste cela pour bitmaps (que j'utilise des éléments du menu). Toutefois, la barre des tâches nécessite un wxIcon au lieu d'un wxBitmap. J'ai donc décidé de convertir l'icône en bitmap, de dessiner le texte, puis de le convertir en icône. Cela fonctionne, sauf que le texte est non représenté transparent. Pourquoi ? Et comment puis-je rendre le texte NON transparent?
Mon code est comme suit à peu près:
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)
...
Ainsi, aucune erreur soulevées et myicon.ico est affiché, mais la lettre A est transparant (au lieu de rouge). Si j'utilise un fichier .bmp pour commencer (myicon.bmp
), le texte apparaît dans la bonne couleur (mais les bordures sont irrégulières). J'ai joué avec des masques, des couleurs de premier plan et d'arrière-plan, mais cela n'a pas aidé.
(J'utilise Windows 7, Python 2.6, wxpython 2,8)
Modifier: J'ai écourté mon explication, et fait le code plus autonome
Cela fait en effet, très belle solution de contournement et merci beaucoup pour le code de copier-coller !! Si pas de meilleure solution dans quelques jours, la prime est à vous – Rabarberski