thank you for your answer, know this method, but as stated earlier, this is to slow (very big screen, very big canvas) so I just wanted to update what changed.
I thought the canvas.eraseBackground=false setting would prevent that — what is this setting for?
Use the areas() parameter of the Paint event to only paint the region you’ve just updated.
[code]Sub Paint(g As Graphics, areas() As REALbasic.Rect) Handles Paint
If areas.LastRowIndex > -1 Then
For n As Integer = 0 To areas.LastRowIndex
g.DrawPicture(p, areas(n).Left, areas(n).top, areas(n).width, areas(n).height, areas(n).Left, areas(n).top, areas(n).width, areas(n).height)
Next
Else
g.DrawPicture(p, 0, 0)
End If
that works very well, I try this out too. In the game I’m using a list which tiles have changed and only they are redrawn, I could pass this info on to the canvas areas()