请问怎样才能在一个控件背景中实现渐变色(使用photoshop图片贴图除外)

解决方案 »

  1.   

    http://www.baidu.com/s?wd=C%23%20%BD%A5%B1%E4%20%B4%FA%C2%EB&cl=3
      

  2.   

    我所实现的这个控件,是从窗体控件Button继乘的,能够实现渐变背景,实现图案及纹理填充文字.
    好了,我们开在开始吧
    1 首先打个vs.net 
    2在“文件”菜单中,指向“新建”,然后选择“项目”以打开“新建项目”对话框。从“C# 项目”列表中选择“Windows 控件库”项目模板,然后在“名称”框中键入LinearGradientButtonLib,然后点确定。
    3 在解决方案资源管理器中,右击 UserControl1.cs,并从快捷菜单中选择“查看代码”。
    4 找到 class 语句 public class UserControl1,将 UserControl1 更改为 LinearGradientButton以更改组件的名称。找到构造函数 public UserControl1(),将它更改为 public LinearGradientButton ()。
    5 在 Class 语句,将该控件从 System.Windows.Forms.UserControl 继承的类型更改为 System.Windows.Forms.Button。这允许继承的控件继承 Button 控件的所有功能。 
    6 在解决方案资源管理器中,单击 UserControl1.cs,并在“属性”窗口中,将 FileName 属性更改为LinearGradientButton.cs.
    好了,到现在工作就告一段落了,下面的工作,是向咱们的控件添加属性了。喝口水,继续!
    先加上名字空间using System.Drawing.Drawing2D;
    1找到 class 语句。在紧靠 { 的后面键入下面的代码:
    private Color froColor; //渐变前景色
              private Color backColor;//渐变背景色
              private bool isUseFloat;//是否使用角度转变
              private float angle;    //放置角度
              private LinearGradientMode mode;//设定渐变的角度
              private HatchStyle hatchStyle; //设定文本的填充图案
              private bool isUseStyle;//设定是否用图案填充图案 
     
    上面这些是我们控件需要的私有域,下面开始为每个私有域做它们对应的属性.在以上代码的下面,写入以下代码:
        [Description("设定按钮渐变的前景色"),Category("Appearance")]
             public Color FrontColor
             {
                  get
                  {
                       return froColor;
                  }
                  set
                  {
                       froColor=value;
                  }
             }
              [Description("设定按钮渐变的背景色"),Category("Appearance")]
             public Color BackGroundColor
             {
                  get
                  {
                       return backColor;
                  }
                  set
                  {
                       backColor=value;
                  }
             }
              [DefaultValue(false),Description("设定是否人工设定角度")]
             public bool UseFloat
             {
                  get
                  {
                       return isUseFloat;
                  }
                  set
                  {
                       isUseFloat=value;
                  }
             }
              [DefaultValue(false),Description("设定是否使用图案填充文本")]
             public bool UseStyle
             {
                  get
                  {
                       return isUseStyle;
                  }
                  set
                  {
                       isUseStyle=value;
                  }
             }
              [DefaultValue(0),Description("定义渐变方向的角度,以度为单位从 X 轴顺时针测量。 "),Category("Appearance")]
             public float Angle
             {
                  get
                  {
                       return angle;
                  }
                  set
                  {
                       angle=value;
                  }
             }
              [DefaultValue(0),Description("当UseFloat设为false时,设定渐变方向。 "),Category("Appearance")]
             public LinearGradientMode Mode
             {
                  get
                  {
                       return mode;
                  }
                  set
                  {
                       mode=value;
                  }
             }
              [DefaultValue(false),Description("设定文本要填充的图案"),Category("Appearance")]
             public HatchStyle FillStyle
             {
                  get
                  {
                       return hatchStyle;
                  }
                  set
                  {
                       hatchStyle=value;
                  }
             }
    好了,我们将控件的属性设计好了,下面就要我们写事件了.