wx.StaticBitmap和wx.DC:对不断变化的图像来说哪个更好?
我想要一个用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
如果你有一些变化很快的大图片,或者将来想要一些特别的效果,自己写一个控制器来进行绘图会更好,而且其实并不难。
自己绘图的话,你可以正确地调整大小,避免闪烁,还可以把一张图片混合到另一张上,如果你想的话 :)