您的位置:首页 > 编程语言 > C#

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

2005-01-05 23:07 337 查看
自己动手用c#写控件(下)
作者: willsound   www.ASPCool.com 时间:2002-7-11 17:24:15  阅读次数:6736
     因为我们这个控件是实现背景渐变及文字填充,所以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. 双击 LinearGradientButtonLib 项目,并注意该项目此时出现在“选定的组件”窗格中。
  
  添加引用后,应将新控件添加到工具箱。如果您的控件已经出现在工具箱中,则应该跳过下一节。
  
  将控件添加到工具箱
  
  1. 右击工具箱,然后从快捷菜单中选择“自定义工具箱”。
  
  “自定义工具箱”对话框打开。
  
  2. 选择“.NET 框架组件”选项卡并单击“浏览”。浏览到 LinearGradientButtonLib/bin/debug 文件夹并选择 LinearGradientButtonLib.dll。
  
  LinearGradientButton 出现在“自定义工具箱”对话框的组件列表中。
  
  3. 在“自定义工具箱”对话框中,单击 LinearGradientButton 旁的框并关闭窗口。
  
  LinearGradientButton 被添加到选定的工具箱的选项卡上。
  
  将控件添加到窗体
  
  1. 在解决方案资源管理器中,右击“Form1.cs”,然后从快捷菜单中选择“视图设计器”。
  
  2. 在工具箱中,向下滚动直到到达标记为 LinearGradientButton 的图标。双击该图标。
  
  窗体上显示一个“LinearGradientButton”。
  
  3. 右击“LinearGradientButton”并从快捷菜单中选择“属性”。
  
  4. 在“属性”窗口中检查该控件的属性。注意,它们与标准按钮公开的属性相同,不同的是多了我们自己加入的一些属性
  
  5. 设定本控件的前景色及背景色,然后可以选择是否填充文字,是使用角度还是使用系统设定值进行渐变角度的变化。
  
  6. 从“调试”菜单中选择“启动”。 出现 Form1。
  
  谁如果需要源码的话,请给我发信.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息