自己动手用c#写控件(下)

因为我们这个控件是实现背景渐变及文字填充,所以 override Paint 事件以完成自画。

为了完成 override ,现在以下的准备工作(写几个在 Paint 事件用的着的事件) .

//使用角度的方法渐近重画Button

private void DrawButtonWithAngle(Graphics dbg)

{

LinearGradientBrush brush= new LinearGradientBrush( new Rectangle(0,0, this .Width, this .Height),froColor,backColor,angle);

dbg.FillRectangle(brush,0,0, this .Width, this .Height);

brush.Dispose();

}

/// /使用模式的方法渐近重画Button

private void DrawButtonWithMode(Graphics dbg,LinearGradientMode Mode)

{

LinearGradientBrush brush= new LinearGradientBrush( new Rectangle(0,0, this .Width, this .Height),froColor,backColor,Mode);

dbg.FillRectangle(brush,0,0, this .Width, this .Height);

brush.Dispose();

}

//重画Button的文本(Text),不使用图案填充

private void DrawButtonText(Graphics dbg)

{

StringFormat format= new StringFormat();

format.LineAlignment=StringAlignment.Center;

format.Alignment=StringAlignment.Center;

dbg.DrawString( this .Text, this .Font, new SolidBrush( this .ForeColor), new Rectangle(0,0, this .Width, this .Height),format);

}

//override DrawButtonText函数,使之可以用图案填充文本

private void DrawButtonText(Graphics dbg, HatchStyle hs)

{

StringFormat format= new StringFormat();

format.LineAlignment=StringAlignment.Center;

format.Alignment=StringAlignment.Center;

dbg.DrawString( this .Text, this .Font, new HatchBrush(hs, this .ForeColor,Color.Aquamarine), new Rectangle(0,0, this .Width, this .Height),format);

}

好了,现在开始重写 Paint事件了.

protected override void OnPaint(PaintEventArgs pe)

{

Graphics g=pe.Graphics;

base .OnPaint(pe); //调用父控件的方法

if (isUseFloat== true ) //假如使用角度控制渐变的角度

DrawButtonWithAngle(g);

if (isUseFloat== false )

DrawButtonWithMode(g,mode);

if (isUseStyle== true )//假如使用图案填充文字

DrawButtonText(g,hatchStyle);

else

DrawButtonText(g);

}

好了,现在大功告成了,进行保存,生成。

** 创建测试项目 **

1. 在 “ 文件 ” 菜单上,指向 “ 添加项目 ” ,然后单击 “ 新建项目 ” 以打开 “ 添加新项目 ” 对话框。

2. 选择 “Visual C# 项目 ” 节点,然后单击 “Windows 应用程序 ” 。

3. 在 “ 名称 ” 框中键入 ** Test ** 。

4. 在解决方案资源管理器中,右击测试项目的 “ 引用 ” 节点,然后从快捷菜单中选择 “ 添加引用 ” 以显示 “ 添加引用 ” 对话框。

5. 单击标记为 “ 项目 ” 的选项卡。

6. 双击 LinearGradientButton Lib 项目,并注意该项目此时出现在 “ 选定的组件 ” 窗格中。

添加引用后,应将新控件添加到工具箱。如果您的控件已经出现在工具箱中,则应该跳过下一节。

** 将控件添加到工具箱 **

1. 右击工具箱,然后从快捷菜单中选择 “ 自定义工具箱 ” 。

“自定义工具箱”对话框打开。

2. 选择 “.NET 框架组件 ” 选项卡并单击 “ 浏览 ” 。浏览到 LinearGradientButton Lib\bin\debug 文件夹并选择 LinearGradientButtonLib .dll 。

LinearGradientButton 出现在“自定义工具箱”对话框的组件列表中。

3. 在 “ 自定义工具箱 ” 对话框中,单击 LinearGradientButton 旁的框并关闭窗口。

LinearGradientButton 被添加到选定的工具箱的选项卡上。

** 将控件添加到窗体 **

1. 在解决方案资源管理器中,右击 “Form1.cs” ,然后从快捷菜单中选择 “ 视图设计器 ” 。

2. 在工具箱中,向下滚动直到到达标记为 LinearGradientButton 的图标。双击该图标。

窗体上显示一个 “ LinearGradientButton ”。

3. 右击 “ LinearGradientButton ” 并从快捷菜单中选择 “ 属性 ” 。

4. 在 “ 属性 ” 窗口中检查该控件的属性。注意,它们与标准按钮公开的属性相同,不同的是多了我们自己加入的一些属性

5. 设定本控件的前景色及背景色,然后可以选择是否填充文字,是使用角度还是使用系统设定值进行渐变角度的变化。

6. 从 “ 调试 ” 菜单中选择 “ 启动 ” 。 出现 ** Form1 ** 。

谁如果需要源码的话,请给我发信 .

Published At
Categories with Web编程
Tagged with
comments powered by Disqus