wx.StaticBitmap和wx.DC:对不断变化的图像来说哪个更好?

2 投票
3 回答
1779 浏览
提问于 2025-04-15 14:27

我想要一个用Python做的图形界面,可以从文件中加载不同的图片。我看到过很多加载图片的例子,代码大概是这样的:

img = wx.Image("1.jpg", wx.BITMAP_TYPE_ANY, -1)
sb = wx.StaticBitmap(rightPanel, -1, wx.BitmapFromImage(img))
sizer.Add(sb)

这个方法似乎适合那些在程序运行期间一直存在的图片。不过,我找不到一个好的办法来删除或重新加载这些图片。那我用wx.DC会不会更适合我的应用呢?

3 个回答

0

我在这里看到:http://docs.wxwidgets.org/trunk/classwx_static_bitmap.html

“在某些平台上,原生实现只适用于在对话框中显示小图标。特别是在Windows 9x系统中,位图的大小限制为64*64像素。”

这可能会造成一些问题。如果你使用了DC(设备上下文),那么你可能需要进行“双缓冲”,否则在重新绘制、调整大小或更新时,可能会出现闪烁现象。

否则,如果你打算频繁更新图像,似乎应该使用“普通”的位图。

0

你不需要删除StaticBitmap,只要用它的SetBitmap方法设置一个新的图片就可以了。

如果新的图片大小不一样,你可能需要在它的父级上调用一次Layout,这样布局才能调整好。

1

如果你有一些变化很快的大图片,或者将来想要一些特别的效果,自己写一个控制器来进行绘图会更好,而且其实并不难。

自己绘图的话,你可以正确地调整大小,避免闪烁,还可以把一张图片混合到另一张上,如果你想的话 :)

撰写回答