如何构建简单的wxWidgets图像显示

Jiv*_*son 6 wxwidgets image bitmap scrolledwindow

我写了一个wxPython程序,我正在翻译成wxWidgets.该程序有一个滚动窗口,显示图像.在Rappin,wxPython In Action(清单12.1)之后,我在一个面板中使用了StaticBitmap.在浏览最新的wxWidgets文档时,我发现了一个可怕的警告:wxStaticBitmap应该只用于非常小的图像.它说,"......如果你想要便携地显示更大的图像,你应该使用自己的控制." 好的.给我看看.我没有"自己的控制权".

拉平错了,或文件是否过时了?

问题 - 一个新手,毫无疑问 - 是什么是在wxWidgets中做一个简单的图像视图窗口的正确方法?wxStaticBitmap的直接替代品会很好.我查看了wxWidgets"samples"目录中的"image"程序.这是一场战争与和平. 当然必须有罐头类或简单的食谱.

mgh*_*hie 3

不要让“图像”样本的大小欺骗了您,只需几行代码即可完成您想要的操作。

MyImageFrameimage.cpp文件中搜索该类,它无非是一个带有私有位图字段的类,一个用于设置位图和窗口客户端大小的自定义构造函数,以及一个事件处理程序EVT_PAINT

void OnPaint(wxPaintEvent& WXUNUSED(event))
{
    wxPaintDC dc( this );
    dc.DrawBitmap( m_bitmap, 0, 0, true /* use mask */ );
}
Run Code Online (Sandbox Code Playgroud)

由于您不需要框架类,因此您的秘诀是:您创建一个简单的后代,它具有类似的构造函数、绘制处理程序并复制您在代码中使用的wxWindow方法。wxStaticBitmap也许只是一种设置新位图并将控件大小调整为新位图尺寸的方法。