利用.NET绘图技术制作水晶按钮控件
http://tech.ddvip.com 2006年11月18日 社区交流
本文详细介绍利用.NET绘图技术制作水晶按钮控件
Rectangle rc2 = rc;
rc2.Offset(shadowOffset, shadowOffset);
GraphicsPath path2 = this.GetGraphicsPath(rc2, 20);
PathGradientBrush br2 = new PathGradientBrush(path2);
br2.CenterColor = Color.Black;
br2.SurroundColors = new Color[] {SystemColors.ButtonFace};
//为了更逼真,我们将渐变结束颜色设定为窗体前景颜色,可以根据窗口的前景颜色适当调整创建完该对象的实例后,阴影图形的内部被填充为一个放射状的渐变,也许读者会问,为什么得用PathGradientBrush填充图形内部,而不用LinearGradientBrush呢?其实原因很简单,就是为了保证按钮下方和右方的阴影渐变颜色和程度是一致的,否则若还使用线性渐变LinearGradientBrush,结果就是这样如下图:

三个Brush对象的实例br1、br2和br3创建完成后,我们需要按照阴影、按钮本身,最后是按钮顶部的白色渐变部分这样的顺序来绘制它们。调用Graphics对象的FillPath方法分别使用三种不同的Brush对象来填充 GraphicsPath 的内部,这样具备水晶样式的三维按钮就基本创建完成了。最后,我们再利用.Net二级缓存绘图技术将按钮以及按钮上所显示的文字绘制到屏幕上。
二、 实现
我们利用C# 来制作水晶按钮控件。
首先启动Visual Studio 2005,新建空白解决方案,我们取名为:TestCrystalButton,然后在项目导航栏上右击鼠标添加新项目,为此解决方案添加新的C# Windows 控件库,取名为MyControls。IDE会创建一个继承于UserControl名为UserControl1的类,修改代码使其继承自Button,并将原文件中所有引用UserControl1名称的地方都更改为CrystalButton,在项目导航栏中把UserControl1.cs更名为CrystalButton.cs,如下面一段代码:
来源:天极软件 作者:窦瑞欣 责编:豆豆技术应用
正在加载评论...