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
This commit is contained in:
committed by
Vadim Zeitlin
parent
ca5e944a67
commit
52e71680ea
@@ -2232,7 +2232,7 @@ void GridFrame::OnGridRender( wxCommandEvent& event )
|
|||||||
int styleRender = 0, i;
|
int styleRender = 0, i;
|
||||||
bool useLometric = false, defSize = false;
|
bool useLometric = false, defSize = false;
|
||||||
double zoom = 1;
|
double zoom = 1;
|
||||||
wxSize sizeMargin( 0, 0 );
|
wxSize sizeOffset( 0, 0 );
|
||||||
wxPoint pointOrigin( 0, 0 );
|
wxPoint pointOrigin( 0, 0 );
|
||||||
|
|
||||||
wxMenu* menu = GetMenuBar()->GetMenu( 0 );
|
wxMenu* menu = GetMenuBar()->GetMenu( 0 );
|
||||||
@@ -2255,7 +2255,7 @@ void GridFrame::OnGridRender( wxCommandEvent& event )
|
|||||||
{
|
{
|
||||||
pointOrigin.x += 50;
|
pointOrigin.x += 50;
|
||||||
pointOrigin.y += 50;
|
pointOrigin.y += 50;
|
||||||
sizeMargin.IncBy( 50 );
|
sizeOffset.IncBy( 50 );
|
||||||
}
|
}
|
||||||
if ( menu->FindItem( ID_RENDER_ZOOM )->IsChecked() )
|
if ( menu->FindItem( ID_RENDER_ZOOM )->IsChecked() )
|
||||||
zoom = 1.25;
|
zoom = 1.25;
|
||||||
@@ -2310,26 +2310,19 @@ void GridFrame::OnGridRender( wxCommandEvent& event )
|
|||||||
sizeRender.y *= zoom;
|
sizeRender.y *= zoom;
|
||||||
|
|
||||||
// delete any existing render frame and create new one
|
// delete any existing render frame and create new one
|
||||||
wxWindow* win = FindWindow( "frameRender" );
|
wxWindow* win = FindWindowByName( "frameRender" );
|
||||||
if ( win )
|
if ( win )
|
||||||
win->Destroy();
|
win->Destroy();
|
||||||
|
|
||||||
|
// create a frame large enough for the rendered bitmap
|
||||||
wxFrame* frame = new wxFrame( this, wxID_ANY, "Grid Render" );
|
wxFrame* frame = new wxFrame( this, wxID_ANY, "Grid Render" );
|
||||||
frame->SetClientSize( 780, 400 );
|
frame->SetClientSize( sizeRender + sizeOffset * 2 );
|
||||||
frame->SetName( "frameRender" );
|
frame->SetName( "frameRender" );
|
||||||
|
|
||||||
wxPanel* canvas = new wxPanel( frame, wxID_ANY );
|
wxPanel* canvas = new wxPanel( frame, wxID_ANY );
|
||||||
|
|
||||||
// make bitmap large enough for margins if any
|
// make a bitmap large enough for any top/left offset
|
||||||
if ( !defSize )
|
wxBitmap bmp( sizeRender + sizeOffset );
|
||||||
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 );
|
|
||||||
|
|
||||||
wxMemoryDC memDc(bmp);
|
wxMemoryDC memDc(bmp);
|
||||||
|
|
||||||
// default row labels have no background colour so set background
|
// default row labels have no background colour so set background
|
||||||
|
Reference in New Issue
Block a user