我正在尝试创建静态位图,但构造函数仅接受wxGDIImages。
这是FormBuilder中的代码:

wxStaticBitmap* tmtBitmap = new wxStaticBitmap( this, wxID_ANY, wxBitmap( wxT("directory"), wxBITMAP_TYPE_ANY ), wxDefaultPosition, wxDefaultSize, 0 );

有什么方法可以将wxBitmap转换为wxGDIImage吗?还是创建给定目录的wxGDIImage?

也许还有另一种方法可以做到这一点。

谢谢。

最佳答案

wxStaticBitmap确实在其构造函数(wx API-Doc)中接受wxBitmap编译器产生的错误消息可能有点误导
我猜你看到这样的事情:

include/wx/msw/statbmp.h:80: note: candidates are: wxStaticBitmap::wxStaticBitmap(const wxStaticBitmap&)
include/wx/msw/statbmp.h:34: note:                 wxStaticBitmap::wxStaticBitmap(wxWindow*, wxWindowID, const wxGDIImage&, const wxPoint&, const wxSize&, long int, const wxString&)
include/wx/msw/statbmp.h:25: note:                 wxStaticBitmap::wxStaticBitmap()

由于这是唯一取决于上下文的东西,因此您的this指针似乎有问题,或者您不在“内部” wxWindow
否则您的编译器无法找出静态类型。您可以使用类似这样的方法来验证:(不要在生产性代码中这样做)
wxStaticBitmap* tmtBitmap = new wxStaticBitmap( (wxWindow*)NULL, wxID_ANY, wxBitmap( wxT("directory"), wxBITMAP_TYPE_ANY ), wxDefaultPosition, wxDefaultSize, 0 );

要么
wxStaticBitmap* tmtBitmap = new wxStaticBitmap( (wxWindow*)this, wxID_ANY, wxBitmap( wxT("directory"), wxBITMAP_TYPE_ANY ), wxDefaultPosition, wxDefaultSize, 0 );

关于c++ - wxStaticBitmap构造函数使用wxGDIImage而不是wxBitmap,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14821969/

10-11 15:30