在WinForms UI(.NET3.5)中淡出透明图像

Mr.*_*ame 7 c# transparency image fadeout winforms

应用程序: 我正在编写一个小游戏,可以教用户阅读音乐笔记.游戏很简单.该应用程序显示一个注释,我的小女儿(目标用户)应该点击与该注释匹配的WinForm GUI上的模拟键盘键.她有1分钟可以获得尽可能多的好点击.计算成功和失败.

任务: 当她点击一个好/坏的键盘键时,我想立即确认她是对还是错,而不会打断游戏.我的计划是显示一个OK或FAILED位图逐渐淡出并在~2秒内变得完全透明.将位图淡出是一种很好的方法,可以鼓励用户专注于下一个音符而不再烦扰先前的结果.

技术问题: 如何在具有透明度的Windows窗体上显示位图?或者您是否有其他非侵入性,易于实现的想法让用户知道当前的好/坏选择?

Mic*_*tta 8

正如dylantblack所说,WPF为您提供了更好的工具.如果您选择使用Windows窗体,这是一个简单的方法,使用计时器淡出图像.设置一个你喜欢的频率的计时器.启动计时器,每次增加alpha,并使用增加的alpha通道值绘制白色或任何表单颜色.

int alpha = 0;
Run Code Online (Sandbox Code Playgroud)

...

private void timer1_Tick(object sender, EventArgs e)
{
    if (alpha++ < 255)
    {
        Image image = pictureBox1.Image;
        using (Graphics g = Graphics.FromImage(image))
        {
            Pen pen = new Pen(Color.FromArgb(alpha, 255, 255, 255), image.Width);
            g.DrawLine(pen, -1, -1, image.Width, image.Height);
            g.Save();
        }
        pictureBox1.Image = image;
    }
    else
    {
        timer1.Stop();
    }
}
Run Code Online (Sandbox Code Playgroud)