without warning include wxEuphoria.e include wxGraphics.e include wxStatusBar.e include tiles.e include wxButton.e integer FLAG FLAG = 1 constant Win = create( wxFrame,{0, -1, "Tile Window", -1, -1, 240, 260, wx_or_all({wxDEFAULT_FRAME_STYLE,wxCLIP_CHILDREN}) } ), blankBMP = create( wxBitmap, {BM_IN_MEMORY, 2000, 2000}), drawWin = create( wxPanel, Win ), -- {Win, -1, -1, -1, -1, -1, wxCLIP_CHILDREN} ), drawDC = create( wxMemoryDC, blankBMP ), statBar = create(wxStatusBar,{Win,2}), bttn_Toggle = create( wxButton, {drawWin,-1,"Toggle",-1,-1,-1,-1}) set_status_text(statBar,"Drawing to Bitmap then to Window",1) function pick( sequence s ) return s[ rand(length(s)) ] end function procedure no_erase(atom this, atom id, atom event_type, atom event ) -- this helps eliminate the flicker end procedure set_event_handler( drawWin, get_id(drawWin), wxEVT_ERASE_BACKGROUND, routine_id("no_erase")) procedure toggle_draw_method(atom this, atom id, atom event_type, atom event ) FLAG = not FLAG if FLAG then set_status_text(statBar,"Drawing to Bitmap then to Window",1) else set_status_text(statBar,"Drawing directly to Window",1) end if refresh_window( drawWin ) end procedure set_event_handler( bttn_Toggle, get_id(bttn_Toggle), wxEVT_COMMAND_BUTTON_CLICKED, routine_id("toggle_draw_method")) procedure update_status_bar() sequence size size = get_client_size( drawWin ) & get_client_size( Win ) set_status_text(statBar,sprintf("Size of Win = %d,%d; drawWin = %d,%d",size[3..4]&size[1..2]),0) end procedure procedure Paint( atom this, atom id, atom event_type, atom event ) atom bmp sequence extent atom windc, drawdc windc = create( wxPaintDC, this) extent = get_client_size( this ) if FLAG then drawdc = drawDC else drawdc = windc end if for i = 0 to extent[1] by 23 do for j = 0 to extent[2] by 23 do bmp = pick( {Block,Question,Check,Mine} ) draw_bitmap( drawdc, bmp, i, j, 0 ) end for end for if FLAG then blit( windc, 0, 0, drawDC, 0, 0, extent[1], extent[2], wxCOPY ) end if update_status_bar() delete_instance( windc ) end procedure set_event_handler( drawWin, get_id(drawWin), wxEVT_PAINT, routine_id("Paint")) wxMain( Win )