带轮廓的wx文本

0 投票
1 回答
684 浏览
提问于 2025-04-16 03:49

我有一个用wxpython写的视频播放器,我想在视频上显示当前的帧数(FPS)。

我的文字是黑色的,所以如果视频比较暗,帧数的显示就看不清了。

我想找到一种方法,可以给文字加个轮廓,这样无论视频显示什么,文字都能清晰可见。比如,我想要黑色的文字,外面有白色的轮廓。

现在我是在直接在DC(设备上下文)上绘制文字,代码是这样的:

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

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

谢谢大家的帮助!

1 个回答

1

在选择字体或字体组合方面,没有现成的简单解决方案,比如一种字体用来画轮廓,另一种字体用来填充内部。

如果你只是想显示每秒帧数的值,并且只用数字0到9和一个小点,那么可以自己在图像编辑软件里制作小位图,确保只有中间部分和轮廓可见。

如果你想显示任意文本,那就需要多花点功夫。你需要编程生成带轮廓的字符。首先用一个叫wxMemoryDC的工具把没有轮廓的字体画到位图上,然后转换成wxImage格式,使用GetData()方法获取原始数据。接着,你可以用Sobel滤波器来添加轮廓。这样你就能创建一个部分透明的位图,覆盖到你的显示区域上。如果你想让数字看起来更平滑,可以把它们画得比实际使用的大小大两倍,并使用5x5的滤波器。

撰写回答