淡出具有透明度的图像中的WinForms UI(.NET3.5)
-
12-09-2019 - |
题
<强>应用程序:强> 我写一个小游戏,将教用户读取音符。游戏玩法很简单。该应用程序里显示一个音符,我的小女儿(目标用户)应打在WinForm的GUI匹配的说明仿真键盘键。她有1分钟,获得尽可能多的好击中她能。的成功和失败进行计数。
<强>任务:强> 当她打的好/坏键盘的键,我想确认是否马上她是对还是错的不中断播放的。我的计划是示出了行或FAILED位图逐渐淡出和变〜2秒内完全透明的。淡出位图出来是为了鼓励用户专注于下一个音符,而不是理会先前的结果了一种很好的方式。
<强>的技术问题:强> 我怎么能显示与透明度Windows窗体上的位图?或者你有替代的非侵入性的,易于实施的让当前好/坏选择的用户知道想法?
解决方案
由于dylantblack说,WPF为您提供更好的工具来做到这一点。如果您选择使用Windows形式,请使用淡出出来的图像计时器的简单方法。设置你喜欢的任何频率的计时器。启动计时器,通过每次增加α和绘制白色或任何表单的颜色是随alpha通道值。
int alpha = 0;
...
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();
}
}
其他提示
在的WinForms,你就需要使用定时器或东西动画化确定或故障的控制的透明度,使其淡出,或使用GDI +手动绘制它做类似的事情。
如果您正在使用.NET 3.5,无论如何,我建议你使用WPF,这是做那种事情容易多了。
作为一个例子,你可以看看斯科特Hanselman的婴儿粉碎应用程序,这是开放的源,并具有类似的淡入和淡出的事物的概念。
不隶属于 StackOverflow