タイマーで動いているように見せる

昨日の円の描画にタイマーを付けてアニメーションにする。少しちらつくが、これで小さい円が大きな円の周りを回転しているように見える。

コードは以下の通り。

import math
import clr
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")

from System.Windows.Forms import Application, Form, Timer
from System.Drawing import Size, Color, SolidBrush
from System.ComponentModel import Container

class IForm(Form):
    def __init__(self):
        self.Text = 'Circles'
       
        xc = 140
        yc = 130
        r = 80.0
        self.coords = list()
        for i in range(36):
            x = xc + r*math.cos(math.pi/180.0*10*i)
            y = yc + r*math.sin(math.pi/180.0*10*i)
       
            xy = [x, y]
            self.coords.append(xy)
       
        self.Paint += self.OnPaint
       
        self.count = 0
        self.timer = Timer(Container())
        self.timer.Enabled = True
        self.timer.Interval = 40
        self.timer.Tick += self.OnTick
       
        self.CenterToScreen()
       
    def OnTick(self, sender, event):
        self.count = self.count + 1
        self.Refresh()
       
    def OnPaint(self, event):
        g = event.Graphics
        num = len(self.coords)
        for i in range(num):
            xs = self.coords[i][0]
            ys = self.coords[i][1]
            alpha = (255/num*i+self.count)%255
            color = Color.FromArgb(alpha, 0, 0, 255)
            brush = SolidBrush(color)
            g.FillEllipse(brush, xs, ys, 10, 10)
       
        g.Dispose()

Application.Run(IForm())

実行結果