我正在使用wxWidgets进行一些应用程序,我需要在不同的面板上绘制一些图像。在我的应用程序中有一个主框架,其中包含面板,其中包含一些按钮和文本框。我想在这个面板上创建绘图面板。我创建了一些基于wxWidgets示例的简单测试类来绘制一些东西。
#include "MiniBitmap.h"
MiniBitmap::MiniBitmap(wxPanel *parent, int x, int y, int width, int height, char *bits) :
wxPanel(parent, x, y, width, height) {
Img = wxBitmap(100,100, wxBITMAP_SCREEN_DEPTH);
}
MiniBitmap::MiniBitmap(wxPanel *parent, wxWindowID Id, const wxPoint& pos, const wxSize& size) :
wxPanel(parent, Id, pos, size) {
}
void MiniBitmap::paintEvent(wxPaintEvent & evt) {
// depending on your system you may need to look at double-buffered dcs
wxPaintDC dc(this);
render(dc);
}
void MiniBitmap::paintNow() {
// depending on your system you may need to look at double-buffered dcs
wxClientDC dc(this);
render(dc);
}
void MiniBitmap::render(wxDC& dc) {
// dc.DrawBitmap( Img, 0, 0, false );
dc.DrawText(wxT("Testing"), 40, 60);
dc.SetBrush(*wxGREEN_BRUSH); // green filling
dc.SetPen( wxPen( wxColor(255,0,0), 5 ) ); // 5-pixels-thick red outline
dc.DrawCircle( wxPoint(200,100), 25 /* radius */ );
Refresh();
}
在我的框架中,我在事件表中连接事件
EVT_PAINT(ID_MINI, MiniBitmap::paintEvent)
我在主框架构造函数中动态创建MiniBitmap类型对象。我不太了解这个图书馆,所以我不知道我在哪里弄错了。面板可以成为另一个面板的孩子吗?或者我错了连接事件?