首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wxwidgets saveFile

wxwidgets saveFile
EN

Stack Overflow用户
提问于 2010-03-31 16:53:35
回答 4查看 2K关注 0票数 1

我正在尝试绘制一张简单的图片,并将其保存到wxwidgets中的文件中。这就是我到目前为止所拥有的代码。然而,这段代码永远不会创建test.png图片。

代码语言:javascript
复制
    wxBitmap myBitmap;
    wxMemoryDC dc;
    dc.SelectObject(myBitmap);
    wxFont font=dc.GetFont();
    font.SetPointSize(15);
    dc.SetTextForeground(*wxBLACK);
    dc.DrawRectangle(0,0,50,100);
    wxString s(_T("A"));
    dc.DrawText(s, 5,5);
    wxString test(_T("images/test.png"));
    myBitmap.SaveFile(test, wxBITMAP_TYPE_PNG);

有没有人能帮我解决我做错了什么.../Mike

EN

回答 4

Stack Overflow用户

发布于 2010-03-31 19:04:29

首先给你一个一般性的建议:使用wxWidgets的调试版本,当你做错了什么,它通常会断言。

首先调用默认的wxBitmap构造函数,导致对象不能按原样使用。如果将第一行更改为

代码语言:javascript
复制
wxBitmap myBitmap(200, 200);

相反,您将创建一个200像素宽和高的位图,它实际上可以选择到dc中并在其上绘制。或者,您可以在使用位图之前调用wxBitmap::Create()

此外,为了另存为PNG文件,您需要首先注册PNG图像处理程序(请参阅wxImage documentation)。通过调用::wxInitAllImageHandlers()来注册所有默认图像处理程序可能是最简单的方法。

最后,您需要确保在当前目录下有一个子目录images。或者使用带有绝对路径的文件名。但是,如果保存位图失败,您将在运行时收到一个消息框。

票数 4
EN

Stack Overflow用户

发布于 2017-09-23 22:00:58

在保存位图之前,您可能需要从DC中取消选择它:

代码语言:javascript
复制
dc.SelectObject(wxNullBitmap);
myBitmap.SaveFile(test, wxBITMAP_TYPE_PNG);
票数 0
EN

Stack Overflow用户

发布于 2010-03-31 18:43:07

首先,我会检查对SaveFile的调用的返回,如果它返回true,那么它应该是成功的,否则在其他地方就会失败。

其次,试着给出一个完整的路径,而不是仅仅给出图像/test.png,因为这取决于你程序的当前工作目录,它可能不会把文件放在你认为应该放的地方。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2551554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档