ボタンをクリックすると、C#で画像ボックスがフェードアウトします。フェードアウト後、同じ画像ボックスが次の画像でフェードインします。現在、フェードアウトコードをフェードアウト条件とフェードイン条件の両方に配置しています。(フェードイン用にコードを書き直す必要があります。)コードが2番目の画像のロジックに到達すると、条件がfalseになり、表示を変更せずに終了するまで、コードはループします。2番目の画像で同じ効果が得られるようにコードを修正するにはどうすればよいですか?また、フェードインのフェードアウトロジックを書き直す方法を知っている人がいたら、私に知らせてください。
上部で定義された変数:
int alpha = 0;
bool backButtonClick = false;
bool breakCheck = false;
ボタンのロジックスニペット:
private void storyChooser_Click(object sender, EventArgs e)
{
switch (userChoice)
{
case Choice.Son:
transitions();
if (alpha == 0)
{
pictureBox1.Image = Properties.Resources.test;
timer1.Start();
}
break;
}
タイマー:
private void timer1_Tick(object sender, EventArgs e)
{
if (backButtonClick == true)
{
timer1.Stop();
alpha = 0;
backButtonClick = false;
}
if (alpha++ < 40)
{
Image image = pictureBox1.Image;
using (Graphics g = Graphics.FromImage(image))
{
Pen pen = new Pen(Color.FromArgb(alpha, 255, 255, 255), image.Width);
g.DrawRectangle(pen, -1, -1, image.Width, image.Height);
g.Save();
}
pictureBox1.Image = image;
}
else
{
timer1.Stop();
}
if (alpha == 40 && breakCheck == false)
{
pictureBox1.Image = Properties.Resources.transitionTest;
timer1.Start();
while (alpha-- > 0)
{
Image image = pictureBox1.Image;
using (Graphics g = Graphics.FromImage(image))
{
Pen pen = new Pen(Color.FromArgb(alpha, 255, 255, 255), image.Width);
g.DrawRectangle(pen, -1, -1, image.Width, image.Height);
g.Save();
}
pictureBox1.Image = image;
label1.Text = alpha.ToString();
}
breakCheck = true;
}
label1.Text = alpha.ToString();
}
グラフィックを更新せずに、タイマーの下部に向かってwhileループを実行しています。
ありがとう。