【问题标题】:wx.StaticBitmap or wx.DC: Which is better to use for constantly changing images?wx.StaticBitmap 或 wx.DC:哪个更适合用于不断变化的图像?
【发布时间】:2010-11-29 20:31:07
【问题描述】:

我想要一个可以从文件加载不同图像的 python gui。我见过很多使用以下代码加载图像的示例:

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

它似乎适合在程序的整个生命周期中都存在的图像。我找不到一种优雅的方式来删除/重新加载图像。对我的应用程序使用 wx.DC 会更好吗?

【问题讨论】:

    标签: python user-interface image wxpython


    【解决方案1】:

    您不必删除StaticBitmap,您可以使用SetBitmap 方法为其设置另一个位图。

    如果新图像具有不同的尺寸,您可能需要对其父图像进行显式的Layout 调用,以便调整大小。

    【讨论】:

    • 我搜索了SetBitmap方法,好像是wx.MenuItem的一个实例。我正在显示的图像大约占 GUI 的 1/4。
    【解决方案2】:

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

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

    这可能是个问题。如果您确实使用了 DC,那么您可能必须“双重缓冲”它,或者它可能会在重绘、调整大小或更新时闪烁。

    否则在我看来,如果您希望经常更新它,您应该使用“普通”位图。

    【讨论】:

      【解决方案3】:

      如果你有快速变化的大图,或者你以后想要一些自定义效果,最好自己编写控件并使用paintDC进行绘画,这并不难。

      自己绘制可以正确缩放,避免闪烁,如果您愿意,可以将一张图像混合到另一张图像中:)

      【讨论】:

        猜你喜欢
        • 2016-12-19
        • 1970-01-01
        • 1970-01-01
        • 2016-10-16
        • 1970-01-01
        • 2014-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多