|
分類:[C#]
3つの絵柄を半分ずつずらして、停止ボタンをおしたときには絵柄のきりの良い状態で止めることが
できるように作ってみました。
しかし、プログラムがスマートではないように感じています。
できれば描画用の関数を作って同じようなプログラムは作ってみたいのですが、
もしできる方がいらっしゃいましたらご指導おねがいします。
VC#2005
int ps;//ドラムの位置
int s = 0;//ドラムのデータ(imageList1に5つの画像)
bool stop;//停止ボタンを押したときのフラグ
private void Form1_Load(object sender, EventArgs e)//起動時の処理
{
pictureBox1.Image = new Bitmap(80,240);
ps = 0;
}
private void button1_Click(object sender, EventArgs e)//開始ボタン
{
stop = false;
timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)//タイマー処理
{
int i;
Graphics g = Graphics.FromImage(pictureBox1.Image);
ps = 1 - ps;
if (ps == 0)//ドラムのきりがよいとき
{
for (i = 0; i < 3; i++)
{
g.DrawImage(imageList1.Images[s], 0, 160 - i * 80);
s = (s + 1) % 4;
}
}
else//ドラムが半分ずれた状態
{
for (i = 0; i < 4; i++)
{
g.DrawImage(imageList1.Images[s], 0, 200 - i * 80);
s = (s + 1) % 4;
}
if (stop)//停止ボタンが押されていたら止める
{
for (i = 0; i < 3; i++)
{
g.DrawImage(imageList1.Images[s], 0, 160 - i * 80);
s = (s + 1) % 4;
timer1.Enabled = false;
}
}
g.Dispose();
pictureBox1.Invalidate();
}
}
private void button2_Click(object sender, EventArgs e)//停止ボタン
{
stop = true;
}
}
}
|