From 52e71680ea58dc391a7bb9b94b3c35303f9a6a81 Mon Sep 17 00:00:00 2001 From: John Roberts Date: Mon, 15 Jan 2018 13:24:18 +0100 Subject: [PATCH] Fix grid sample OnGridRender() Destroy current "frameRender" when creating a new render. Make bitmap and frame size equal. Closes https://github.com/wxWidgets/wxWidgets/pull/673 --- samples/grid/griddemo.cpp | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/samples/grid/griddemo.cpp b/samples/grid/griddemo.cpp index 56b831f51d..974959aea7 100644 --- a/samples/grid/griddemo.cpp +++ b/samples/grid/griddemo.cpp @@ -2232,7 +2232,7 @@ void GridFrame::OnGridRender( wxCommandEvent& event ) int styleRender = 0, i; bool useLometric = false, defSize = false; double zoom = 1; - wxSize sizeMargin( 0, 0 ); + wxSize sizeOffset( 0, 0 ); wxPoint pointOrigin( 0, 0 ); wxMenu* menu = GetMenuBar()->GetMenu( 0 ); @@ -2255,7 +2255,7 @@ void GridFrame::OnGridRender( wxCommandEvent& event ) { pointOrigin.x += 50; pointOrigin.y += 50; - sizeMargin.IncBy( 50 ); + sizeOffset.IncBy( 50 ); } if ( menu->FindItem( ID_RENDER_ZOOM )->IsChecked() ) zoom = 1.25; @@ -2310,26 +2310,19 @@ void GridFrame::OnGridRender( wxCommandEvent& event ) sizeRender.y *= zoom; // delete any existing render frame and create new one - wxWindow* win = FindWindow( "frameRender" ); + wxWindow* win = FindWindowByName( "frameRender" ); if ( win ) win->Destroy(); + // create a frame large enough for the rendered bitmap wxFrame* frame = new wxFrame( this, wxID_ANY, "Grid Render" ); - frame->SetClientSize( 780, 400 ); + frame->SetClientSize( sizeRender + sizeOffset * 2 ); frame->SetName( "frameRender" ); wxPanel* canvas = new wxPanel( frame, wxID_ANY ); - // make bitmap large enough for margins if any - if ( !defSize ) - sizeRender.IncBy( sizeMargin * 2 ); - else - sizeRender.IncBy( sizeMargin ); - - wxBitmap bmp( sizeRender ); - // don't leave it larger or drawing will be scaled - sizeRender.DecBy( sizeMargin * 2 ); - + // make a bitmap large enough for any top/left offset + wxBitmap bmp( sizeRender + sizeOffset ); wxMemoryDC memDc(bmp); // default row labels have no background colour so set background