日期:2014-05-18  浏览次数:20790 次

关于不规则窗体淡入淡出效果的问题
我做了一个不规则窗体,大体是在上面放置了一个picturebox控件,占满窗体区域,然后将图片切去不要的部分,不要的部分颜色填充为一种色,再将该色设为窗体的transparencykey,能成功的出现不规则窗体;
然后我又加入了淡入淡出效果,通过定时器改变窗体的opacity属性实现,问题出来了,当我逐渐加大opacity值时,原来为不要部分的区域又显示出来了,好像是transparencykey值在此时无效了。
我想过可能是透明度更改了,无效区域颜色值已不是当初transparencykey设置的颜色值一样的了,可通过color的alpha动态的获取颜色值,然后设置给transparencykey仍然不能使无效区域透明。
有朋友知道是怎么回事,要怎么解决吗?先谢过了。

------解决方案--------------------
我说的使用Region方法,可以参考下面的代码:

private void button1_Click(object sender, EventArgs e)
{
GraphicsPath path = new GraphicsPath();
path.AddEllipse(this.ClientRectangle);
path.AddString( "测试窗体 ", FontFamily.GenericSerif, 1, 100, new PointF(0,0), null);
this.Region = new Region(path);
}