OK, I have a basic blit demo working (thanks to Alex F. for his
reply, which I finally saw).
However, there’s a great deal of “tearing” on the screen - flickering
grey lines in the black background. It looks like the blit isn’t
always complete when the screen refreshes.
Can anyone look at this and tell me what I might be doing wrong? Any
help would be most appreciated!
class MyApp < Wx::App
#Containing frame. frame = Wx::Frame.new(nil, :size => [300, 300]) frame.show #Offscreen drawing buffer. buffer = Wx::Bitmap.new(300, 300) #Displays drawing. window = Wx::Window.new(frame, :size => [300, 300]) window.evt_paint do |event| window.paint do |dc| #Copy the buffer to the viewable window. buffer.draw do |buffer_dc| dc.blit(0, 0, 300, 300, buffer_dc, 0, 0) end end end #Animate. (1..40).each do |i| #Clear screen. buffer.draw do |surface| surface.pen = Wx::Pen.new(Wx::Colour.new(0, 0, 0), 0) surface.brush = Wx::BLACK_BRUSH surface.draw_rectangle(0, 0, 300, 300) end #Draw line. buffer.draw do |surface| surface.pen = Wx::Pen.new( Wx::Colour.new(128, 255, 128), 3 ) surface.pen.cap = Wx::CAP_ROUND surface.draw_line(i, 0, i+100, 100) end #Update screen. window.refresh window.update sleep 0.1 end
app = MyApp.new