Mr.*_*ame 7 c# transparency image fadeout winforms
应用程序: 我正在编写一个小游戏,可以教用户阅读音乐笔记.游戏很简单.该应用程序显示一个注释,我的小女儿(目标用户)应该点击与该注释匹配的WinForm GUI上的模拟键盘键.她有1分钟可以获得尽可能多的好点击.计算成功和失败.
任务: 当她点击一个好/坏的键盘键时,我想立即确认她是对还是错,而不会打断游戏.我的计划是显示一个OK或FAILED位图逐渐淡出并在~2秒内变得完全透明.将位图淡出是一种很好的方法,可以鼓励用户专注于下一个音符而不再烦扰先前的结果.
技术问题: 如何在具有透明度的Windows窗体上显示位图?或者您是否有其他非侵入性,易于实现的想法让用户知道当前的好/坏选择?
正如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)