我编写了一个 wxPython 程序,并将其翻译成 wxWidgets。该程序有一个显示图像的滚动窗口。在 Rappin,wxPython In Action( list 12.1)之后,我在面板中使用了 StaticBitmap。在浏览最新的 wxWidgets 文档时,我发现了 dire warning wxStaticBitmap 应该只用于非常小的图像。它说,“......如果你想便携地显示更大的图像,你应该使用自己的控件。”好的。给我看看。我没有“自己的控制权”。
是 Rappin 错了,还是文档过时了?
问题 - 一个新手,毫无疑问 - 在 wxWidgets 中做一个简单的 ImageView 窗口的正确方法是什么? wxStaticBitmap 的替代品会很好。我查看了 wxWidgets“samples”目录中的“image”程序。这是一场 war 与和平。当然必须有一个 jar 头类或一个简单的食谱。
最佳答案
不要让“图像”样本的大小欺骗了您,只需几行代码即可完成您想要的操作。
搜索 MyImageFrame
image.cpp 文件中的类,它只不过是一个具有私有(private)位图字段的类,一个用于设置位图和窗口客户端大小的自定义构造函数,以及一个用于 EVT_PAINT
的事件处理程序:
void OnPaint(wxPaintEvent& WXUNUSED(event))
{
wxPaintDC dc( this );
dc.DrawBitmap( m_bitmap, 0, 0, true /* use mask */ );
}
由于您不想要框架类,因此您的秘诀是:创建
wxWindow
的简单后代具有相似的构造函数、绘制处理程序并复制 wxStaticBitmap
的方法您在代码中使用的。也许只是一种设置新位图并将控件大小调整为新位图尺寸的方法。
关于image - 如何构造简单的wxWidgets图片展示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2283667/