0

我使用返回 false 的方法wxBitmap::NewFromPNGData创建了一个 wxBitmap 。IsOk()我的代码是

static const unsigned char image_png[] = ...;
auto bitmap = wxBitmap::NewFromPNGData(image_png, WXSIZEOF(image_png));

bitmap.IsOk()返回false 这段代码有什么问题?还有另一种方法可以从硬编码的 png 中创建位图吗?

4

2 回答 2

0

除非您的 wxWidgets 是在没有 PNG 支持的情况下构建的(这不太可能,因为您需要为此明确禁用它,默认情况下启用它),唯一的解释是显而易见的:您image_png不包含 PNG 格式的有效数据。您是否检查过它没有以某种方式损坏?你是如何创作的image_png?您misc/scripts/png2c.py是从 wxWidgets 来源还是以其他方式使用?

于 2013-10-24T22:53:12.603 回答
0

我遇到了这个问题(8 年后,可能在提出这个问题时 API 不存在)并通过调用此函数(source(documentation for wxBitmap::NewFromPNGData)来修复它:

#include <wx/imagpng.h>


    wxInitAllImageHandlers() 

看起来您也可以添加单独的处理程序,但我还没有尝试过:wxImage::AddHandler(new wxPNGHandler);

文档wxInitAllImageHandlers()

于 2021-07-05T16:55:01.787 回答