wx带轮廓的文本

时间:2010-09-07 17:24:45

标签: python wxpython

我有一个用wxpython编写的视频播放器,并将当前的FPS覆盖到视频上。

我的文字是黑色的,所以如果视频足够暗,则FPS计数器不可见。

我正在寻找一种用大纲绘制文字的方法,这样无论视频显示的是什么,它都会突出。例如。我想要带有白色轮廓的黑色文字。

我目前正在直接将文字绘制到DC上,如下所示:

dc.DrawBitmap(self.img,0,0)

dc.DrawText(str(self.frames),0,0)

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

根据字体选择或字体对中的选项,你可以选择任何不错的内置解决方案,一个用于绘制轮廓,另一个用于绘制内部。

如果您只显示每秒帧数值且仅使用数字0..9和'。'然后使用小位图为自己在图像编辑器中创建的数字,使用alpha,以便只显示中心区域和轮廓。

如果你想要任意文字,那就更有意义了。以编程方式生成带有轮廓的字符。使用wxMemoryDC将未显示的字体绘制到位图,转换为wxImage,GetData()以获取原始数据,使用http://en.wikipedia.org/wiki/Sobel_filter添加轮廓 - 然后您可以创建部分透明的位图以覆盖到你的DC。如果你想要对数字进行很好的抗锯齿处理,那么它们的大小将是你使用的两倍,并使用5x5内核。