ちょっと解説。
僕のTimeTimerでは残り秒数remainを1秒毎の
タイマ・ティックでデクリメントしてます。
パックマンを描くのは Graphics.FillPieで。
Graphics.FillPie(ブラシ, 描く範囲のX,Y,幅,高さ, 開始角度, 扇の角度)
でして、扇の角度はremainが一回りで3600[秒]ですからremain/10で丁度
一回りの360[度]。なので扇の角度はremain/10となります。
扇の開始角度は、X軸方向(→)を起点に時計回りに指定します。
表示上の起点は-Y軸方向(↑)ですから270度ズレてます。
さらに、remainが小さくなるほど時計回りに回すのですから符号がひっくり返ります。
そんなわけで 扇の開始角度は (270 - remain/10)[度] となるです。
扇の中心を Point center, 半径を int radius (このふたつはフォームresizeのたびに再計算)と
してますから、パックマンを描くコードは:
// 描け! イベント
private void pnlClock_Paint(object sender, PaintEventArgs e)
{
Brush brush = new SolidBrush(Color.Red); // 赤いブラシ
Graphics g = e.Graphics; // Graphicsオブジェクト
int theta;
theta = 270 - (remain / 10); // 扇の開始角度
g.FillPie(brush, // ブラシ
center.X - radius, center.Y - radius, // X,Y
radius + radius, radius + radius, // 幅, 高さ
theta, // 開始角度
remain/10); // 扇の角度
brush.Dispose();
}
となるわけすね。
円く並んだボタンの位置決めも同様のコードで行ってます。