require 'rubygems' require 'wx' include Wx class RegionTest < App def on_init @frame = Wx::Frame.new( nil , -1 , "Test Frame", DEFAULT_POSITION, Size.new(400, 500)); @x = 10 @y = 10 Timer.after(1000){@frame.paint{|dc| dc.draw_rectangle(10, 10, 300, 200) }} @frame.show evt_key_down() {|event| refreshRectangle { case event.get_key_code when 315 : @y -= 10 when 314 : @x -= 10 when 316 : @x += 10 when 317 : @y += 10 end } } end def refreshRectangle @frame.paint{|dc| clearRectangle(dc) yield drawRectangle(dc) } end def clearRectangle(dc) region = Region.new(@x,@y,20,20) dc.set_background(Wx::WHITE_BRUSH) dc.set_clipping_region(region) dc.clear dc.destroy_clipping_region end def drawRectangle(dc) dc.destroy_clipping_region dc.set_brush(Wx::GREEN_BRUSH) dc.set_pen(Wx::BLACK_PEN) dc.draw_rectangle(@x, @y, 20, 20) end main = RegionTest.new main.main_loop end