在 WxWidgets 中使用位图
Working with Bitmaps in WxWidgets
我在我正在阅读的"使用 wxWidgets 进行跨平台 GUI 编程"一书中给出了以下代码:
BEGIN_EVENT_TABLE(MyWindow, wxWindow)
EVT_ERASE_BACKGROUND(MyWindow::OnErase)
END_EVENT_TABLE()
void MyWindow::OnErase(wxEraseEvent& event)
{
wxClientDC* clientDC = NULL;
if (!event.GetDC())
clientDC = new wxClientDC(this);
wxDC* dc = clientDC ? clientDC : event.GetDC() ;
wxSize sz = GetClientSize();
wxEffects effects;
effects.TileBitmap(wxRect(0, 0, sz.x, sz.y), *dc, m_bitmap);
if (clientDC)
delete clientDC;
}
这段代码没有显示如何加载位图,所以在谷歌上搜索了一些之后,我想出了:
wxBitmap m_bitmap;
bool result = m_bitmap.LoadFile("D:image.png", wxBITMAP_TYPE_PNG);
但这返回了 false
的布尔结果,这意味着函数LoadFile
无法加载文件。我还尝试加载一个BMP文件,但该文件也失败了。
我遇到的另一个问题是wxEffects
被编译器警告标记为弃用。
您需要注册 PNG 图像处理程序才能加载 PNG 位图。最简单的方法是在应用程序初始化期间的某个时刻调用 wxInitAllImageHandlers() 函数,例如在被覆盖的MyApp::OnInit()
中。
至于wxEffects
被弃用,这只是因为这本书相当旧,从那以后有很多事情发生了变化。如果您使用的是wxWidgets 3.0,我强烈建议您阅读重要更改的概述。如果你不这样做,我建议你更强烈地使用它。
相关文章:
- C / C++ 移位/偏移/向左或向右移动位图?
- 如何在快板的屏幕中显示子位图的绘制?
- CreateDIBSection为同一图像返回不一致的位图位值
- C++ 位图中的 ttc 字体
- 使用 GDI+ 旋转位图,然后转换为 HDC
- 难以从 CImageList 设置菜单项位图
- 如何将位图拉伸到父面板(wxWidgets 自定义)
- 如何使用 freetype2 访问单色位图中的像素状态
- 将位图 (bmp) 转换为具有透明度的 png (Windows c++)
- 安卓工作室 |CPP 文件错误错误: 位图库中对"AndroidBitmap_unlockPixels"的未定义引用
- 位图到垫子/2D 数组
- Gdiplus位图没有Alpha通道
- 如何从路径字符串加载Gdiplus::位图
- 在C++中使用Gdiplus创建透明位图
- 用C++压缩内存中的位图
- 在 WxWidgets 中使用位图
- 使用 wxBitmap::NewFromPNGData 方法创建位图会导致 wxWidgets 3.0 中的断言
- wxWidgets -移除位图按钮周围的框架
- 在静态位图wxWidgets上更改图像
- 在wxWidgets中显示位图失败