创建表单淡出过渡

时间:2015-11-22 19:56:04

标签: c# winforms drawing

你怎么能 - 在WinForms中 - 创建一个黑色区域(随着时间的推移)失去/获得透明度并不断重绘,以便创建一种过渡?我不想创建一个单独的表单,所以这将非常有用,我可以在黑色区域达到0的透明度时重新排列我的新项目。

左:我现在拥有什么:
右图:程序在启动时的样子 我想要的是:完全黑屏

The resulting

1 个答案:

答案 0 :(得分:2)

覆盖表单的OnPaint方法,并使用所需的透明度填充表单大小的矩形。在此示例中,transparency不断增加:

var transparency = 0;
protected override OnPaint(PaintEventArgs e)
{
  base.OnPaint(e);
  // e.Graphics.DrawImage(Image, imageLeft, imageTop, imageWidth, imageHeight);
  e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(transparency, Black)),   this.ClientRectangle);
}

如果您想在Timer事件中的Tick事件Invalidate内强制执行此操作,请执行此操作。

protected void MyTimer_Tick(object sender, eventArgs e) {
  transparency++;
  MyForm.Invalidate();
}

如果您需要在PictureBox上绘图,则会出现问题。解决它的一种方法是在绘制淡入淡出之前摆脱PictureBox并使用Graphics.DrawImage绘制图像。如果你想要显示图像但黑色上升到你动物的边缘,那么让它的背景颜色透明,并转换你的图像使用PNG或GIF,动物的所有周围都是透明的原始图片。

要获得更复杂的效果,请查看Google代码上的dot-net-transitions project。它支持各种线性/非线性转换。

相关问题