2014-08-19 4 views
0

Я пытаюсь нарисовать мой wxGLCanvas в панели и заполнить область панели, но результат показан на изображении ниже. У меня был пример куба OpenGL, который отлично работает, но в этом примере wxGLCanvas является родителем для wxFrame. Когда я пытаюсь передать его в wxPanel, я получаю часть панели, отображающую мой wxGLCanvas.wxWidgets painting wxGLCanvas на wxPanel

enter image description here

Красная коробка должна заполнить панель в изображении. Вот конструктор для моего окна, который создает все содержимое на изображении.

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); 

ответ

1

Вы никогда не указать, как следует ваш glCanvas выкладываться - так это не так. Простейшим решением является использование sizer для панели и добавление холста к этому sizer с соотношением 1 и флажком расширения.

Смежные вопросы