タイマーで動いているように見せる
昨日の円の描画にタイマーを付けてアニメーションにする。少しちらつくが、これで小さい円が大きな円の周りを回転しているように見える。
コードは以下の通り。
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())