我对 wxWidget 很陌生。我想创建一个显示一些文本和图片的框架。我曾尝试在 internet/wsWidget 帮助上搜索,但无法找到解决方案。我知道有一些图像处理程序,例如 wxPNGHandler();但我不知道如何使用它。任何显示图像的简单代码都会非常有用。
class MyFrame : public wxFrame
{
public:
MyFrame();
}
MyFrame :: MyFrame() : wxFrame( NULL, wxID_ANY, wxT( "My wxWidget" ), wxDefaultPosition, wxSize( 290, 180 ), wxCAPTION | wxCLOSE_BOX)
{
wxPanel *panel = new wxPanel(this, wxID_ANY);
wxString text = wxT("Text Display\n");
//Add image to display
}
尝试了一天,终于成功了。
wxPNGHandler *handler = new wxPNGHandler;
wxImage::AddHandler(handler);
wxStaticBitmap *image;
image = new wxStaticBitmap( this, wxID_ANY, wxBitmap("Windows_7_logo.png", wxBITMAP_TYPE_PNG), wxPoint(50,100), wxSize(100, 500));
您已经找到了
wxStaticBitmap
,但下次您有问题时,我的建议是在 wxWidgets 示例 中进行搜索。例如,在样本目录下的所有 png
文件中搜索 *.cpp
将会找到 samples/widgets/statbmp.cpp
,这将为您提供要使用的控件的名称。
试试这个。
//创建一个临时的(堆栈分配的)wxPaintDC对象 wxPaintDC PaintDC(this);
//绘制背景图 PaintDC.DrawBitmap(wxBitmap(wxImage("image.png")),0,0);
你可以这样做:
wxString imagePath = "path//to//your//image//example.png";
wxInitAllImageHandlers();
wxImage originalImage(imagePath, wxBITMAP_TYPE_ANY);
wxImage resizedImage = originalImage.Scale(300, 300); //resize
wxBitmap bitmap(resizedImage);
wxStaticBitmap* image;
image = new wxStaticBitmap(this, wxID_ANY, bitmap, wxPoint(220, 10), wxSize(300, 300));
这对我来说是工作