2

如何将简单的静态图像(位图)加载到我的面板中?我只想定义图像的位置,没有别的。

这运行没有错误:

bmp = wx.Image('pics/default.bmp', wx.BITMAP_TYPE_BMP).ConvertToBitmap()
wx.StaticBitmap(self.panel, -1, bmp, (500, 500))

但不是我的图像(default.bmp),只有一个黑色的小方块(但至少在正确的位置)

编辑:这有效:

    self.picture = wx.StaticBitmap(self.panel,size=(200,300),pos=(500,500))
    self.picture.SetBitmap(wx.Bitmap('pics/default.bmp'))

问题是我必须添加我的 StaticBitmap 的大小。

4

1 回答 1

3

我对将位图插入 wxPython 不太熟悉,但是,我只是对 API 做了一些阅读,我想我可能已经找到了你的问题。

用于声明“通常你应该只从子类中调用它”的API,因为普通的旧wx.StaticBitmap.__init__()wx.Control不是很有用。在同一页面上,您还可以看到描述为“执行第二阶段并创建 GUI 控件”的方法wx.StaticBitmap.Create()您只是完成了两阶段过程的第一阶段。尝试调用该Create()方法,看看它是否有帮助。

那么问题就变成了“为什么我们甚至需要一个‘第二阶段’来进行创作?” 我做了更多的挖掘,我从wx.Image API中找到了以下摘录:

wx.Image 不能直接绘制到 wx.DC。相反,必须使用 wx.BitmapFromImage 构造函数从它创建一个特定于平台的 wx.Bitmap 对象。

这似乎意味着 wxPython 中图像渲染的某些平台相关部分要求或在逻辑上保证将图像创建分为两个阶段。

最后一点是,如您所见,wx.ImageAPI 说要使用wx.BitmapFromImage()方法。我阅读了文档,看起来它可以为您完成所有工作。

祝你好运!

于 2012-09-22T01:21:18.580 回答