Here are several things you might want to pay attention to :
- Don't use platform.gc(): as your standard GC context (only use the on passed in the on.paint(gc)
- Make sure you refresh the drawing buffer often enough. That might be the real problem of yours, here. Actually, the software refreshes constantly, contraty to the device, which refrehes only when needed or when it's asked. So make sure that when you want to draw something and update the screen consequently, call platform.window:invalidate()
About your 2nd question, the code would indeed be needed...