我正在尝试绘制一张简单的图片,并将其保存到wxwidgets中的文件中。这就是我到目前为止所拥有的代码。然而,这段代码永远不会创建test.png图片。
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
发布于 2010-03-31 19:04:29
首先给你一个一般性的建议:使用wxWidgets的调试版本,当你做错了什么,它通常会断言。
首先调用默认的wxBitmap构造函数,导致对象不能按原样使用。如果将第一行更改为
wxBitmap myBitmap(200, 200);相反,您将创建一个200像素宽和高的位图,它实际上可以选择到dc中并在其上绘制。或者,您可以在使用位图之前调用wxBitmap::Create()。
此外,为了另存为PNG文件,您需要首先注册PNG图像处理程序(请参阅wxImage documentation)。通过调用::wxInitAllImageHandlers()来注册所有默认图像处理程序可能是最简单的方法。
最后,您需要确保在当前目录下有一个子目录images。或者使用带有绝对路径的文件名。但是,如果保存位图失败,您将在运行时收到一个消息框。
发布于 2017-09-23 22:00:58
在保存位图之前,您可能需要从DC中取消选择它:
dc.SelectObject(wxNullBitmap);
myBitmap.SaveFile(test, wxBITMAP_TYPE_PNG);发布于 2010-03-31 18:43:07
首先,我会检查对SaveFile的调用的返回,如果它返回true,那么它应该是成功的,否则在其他地方就会失败。
其次,试着给出一个完整的路径,而不是仅仅给出图像/test.png,因为这取决于你程序的当前工作目录,它可能不会把文件放在你认为应该放的地方。
https://stackoverflow.com/questions/2551554
复制相似问题