我试图在面板中绘制我的wxGLCanvas并填充面板的区域,但结果如下图所示。我让OpenGL多维数据集示例运行得很好,但在该示例中,wxGLCanvas是wxFrame的父对象。当我试图将它设置为wxPanel的父对象时,我得到了显示我的wxGLCanvas的面板的一小部分。

红色框应填充图像中的面板。这是我的窗口的构造函数,它创建了图像中的所有东西。
wxBEGIN_EVENT_TABLE(MainWindow, wxFrame)
EVT_MENU(wxID_NEW, MainWindow::OnNewWindow)
EVT_MENU(wxID_CLOSE, MainWindow::OnClose)
wxEND_EVENT_TABLE()
MainWindow::MainWindow()
: wxFrame(NULL, wxID_ANY, wxT("OpenGL Project Test"),
wxDefaultPosition,wxDefaultSize)
{
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
m_statusBar1 = this->CreateStatusBar( 1, wxST_SIZEGRIP, wxID_ANY );
m_menubar1 = new wxMenuBar( 0 );
m_menu1 = new wxMenu();
m_menubar1->Append( m_menu1, wxT("MyMenu") );
m_menu2 = new wxMenu();
m_menubar1->Append( m_menu2, wxT("MyMenu") );
m_menu3 = new wxMenu();
m_menubar1->Append( m_menu3, wxT("MyMenu") );
m_menu4 = new wxMenu();
m_menubar1->Append( m_menu4, wxT("MyMenu") );
this->SetMenuBar( m_menubar1 );
m_toolBar4 = this->CreateToolBar( wxTB_HORIZONTAL, wxID_ANY );
m_tool1 = m_toolBar4->AddTool( wxID_ANY, wxT("tool"), wxNullBitmap, wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL );
m_toolBar4->Realize();
wxBoxSizer* bSizer1;
bSizer1 = new wxBoxSizer( wxHORIZONTAL );
// ######### Here is where I try to set the panel as a parent of MyGLCanvas ##########
m_panel2 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
bSizer1->Add( m_panel2, 1, wxEXPAND | wxALL, 5 );
MyGLCanvas * glCanvas = new MyGLCanvas(m_panel2);
m_ribbonBar2 = new wxRibbonBar( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxRIBBON_BAR_FLOW_VERTICAL );
m_ribbonBar2->SetArtProvider(new wxRibbonDefaultArtProvider);
m_ribbonPage8 = new wxRibbonPage( m_ribbonBar2, wxID_ANY, wxT("MyRibbonPage") , wxNullBitmap , 0 );
m_ribbonPage8->SetMinSize( wxSize( 400,400 ) );
m_ribbonPanel16 = new wxRibbonPanel( m_ribbonPage8, wxID_ANY, wxT("MyRibbonPanel") ,wxBitmap() , wxDefaultPosition, wxDefaultSize, wxRIBBON_PANEL_DEFAULT_STYLE );
m_ribbonButtonBar7 = new wxRibbonButtonBar( m_ribbonPanel16, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
m_ribbonButtonBar7->AddButton( wxID_ANY, wxT("MyRibbonButton"), wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonButtonBar7->AddButton( wxID_ANY, wxT("MyRibbonButton"), wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonButtonBar7->AddButton( wxID_ANY, wxT("MyRibbonButton"), wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonButtonBar7->AddButton( wxID_ANY, wxT("MyRibbonButton"), wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonButtonBar7->AddButton( wxID_ANY, wxT("MyRibbonButton"), wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonButtonBar7->AddButton( wxID_ANY, wxT("MyRibbonButton"), wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonPanel17 = new wxRibbonPanel( m_ribbonPage8, wxID_ANY, wxT("MyRibbonPanel") , wxNullBitmap , wxDefaultPosition, wxDefaultSize, wxRIBBON_PANEL_DEFAULT_STYLE );
m_ribbonToolBar2 = new wxRibbonToolBar( m_ribbonPanel17, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
m_ribbonToolBar2->AddTool( wxID_ANY, wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonToolBar2->AddTool( wxID_ANY, wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonToolBar2->AddTool( wxID_ANY, wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonToolBar2->AddTool( wxID_ANY, wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonToolBar2->AddTool( wxID_ANY, wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonToolBar2->AddTool( wxID_ANY, wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonToolBar2->AddTool( wxID_ANY, wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonPanel18 = new wxRibbonPanel( m_ribbonPage8, wxID_ANY, wxT("MyRibbonPanel") , wxNullBitmap , wxDefaultPosition, wxDefaultSize, wxRIBBON_PANEL_DEFAULT_STYLE );
m_ribbonToolBar3 = new wxRibbonToolBar( m_ribbonPanel18, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
m_ribbonToolBar3->AddDropdownTool( wxID_ANY, wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonToolBar3->AddHybridTool( wxID_ANY, wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonToolBar3->AddHybridTool( wxID_ANY, wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonToolBar3->AddHybridTool( wxID_ANY, wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonToolBar3->AddDropdownTool( wxID_ANY, wxArtProvider::GetBitmap(wxART_QUESTION, wxART_OTHER, wxSize(32, 32)), wxEmptyString);
m_ribbonBar2->Realize();
bSizer1->Add( m_ribbonBar2, 0, wxALL, 5 );
this->SetSizer( bSizer1 );
this->Layout();
this->Centre( wxBOTH );
Show();}
这就是让我困惑的地方
m_panel2 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
bSizer1->Add( m_panel2, 1, wxEXPAND | wxALL, 5 );
MyGLCanvas * glCanvas = new MyGLCanvas(m_panel2);发布于 2014-08-19 20:19:21
您从来没有指定您的画布应该如何布局--所以它不是。最简单的解决方案是对面板使用一个glCanvas,并将画布添加到这个比例为1的sizer中,然后使用扩展标志。
https://stackoverflow.com/questions/25379735
复制相似问题