程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中水晶按鈕的程序生成

C#中水晶按鈕的程序生成

編輯:C#入門知識

做了一個控件,這樣就可以告別圖片按鈕了:)

程序源代碼:

 

using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
using System.Drawing.Text;

namespace WindowsControlLibrary1
{
/// <summary>
/// UserControl1 的摘要說明。
/// </summary>
public class UserControl1 : Button
{
  /// <summary>
  /// 必需的設計器變量。
  /// </summary>
  private System.ComponentModel.Container components = null;
  private bool XiaCen=false;
  private bool mouseMove=false;
  private Color backColor;
  public UserControl1()
  {
   // 該調用是 Windows.Forms 窗體設計器所必需的。
   InitializeComponent();

   // TODO: 在 InitComponent 調用後添加任何初始化
   backColor=this.backColor;
   //this.Text=this.ShowFocusCues.ToString();
  }

  /// <summary>
  /// 清理所有正在使用的資源。
  /// </summary>
  protected override void Dispose( bool disposing )
  {
   if( disposing )
   {
    if( components != null )
     components.Dispose();
   }
   base.Dispose( disposing );
  }

  #region 組件設計器生成的代碼
  /// <summary>
  /// 設計器支持所需的方法 - 不要使用代碼編輯器
  /// 修改此方法的內容。
  /// </summary>
  private void InitializeComponent()
  {
   //
   // UserControl1
   //
   this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.UserControl1_MouseUp);
   this.Paint += new System.Windows.Forms.PaintEventHandler(this.UserControl1_Paint);
   this.MouseEnter += new System.EventHandler(this.UserControl1_MouseEnter);
   this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.UserControl1_KeyUp);
   this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.UserControl1_KeyDown);
   this.BackColorChanged += new System.EventHandler(this.UserControl1_BackColorChanged);
   this.MouseLeave += new System.EventHandler(this.UserControl1_MouseLeave);
   this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.UserControl1_MouseDown);

  }
  #endregion

 
 
  protected GraphicsPath GetGraphicsPath(Rectangle rect)
  {
   GraphicsPath ClientPath = new System.Drawing.Drawing2D.GraphicsPath();
   if(rect.Width<=0)
   {
    rect.Width=1;
   }
   if(rect.Height<=0)
   {
    rect.Height=1;
   }
     
   ClientPath.AddArc(rect.Left,rect.Top,rect.Height,rect.Height,90f,180f);
   ClientPath.AddArc(rect.Right-rect.Height,rect.Top,rect.Height,rect.Height,270f,180f);
   ClientPath.CloseFigure();
   return ClientPath;
  }
  
  protected GraphicsPath GetGraphicsPath1(Rectangle rect)
  {
   GraphicsPath ClientPath = new System.Drawing.Drawing2D.GraphicsPath();
   if(rect.Width<=0)
   {
    rect.Width=1;
   }
   if(rect.Height<=0)
   {
    rect.Height=1;
   }
     
   ClientPath.AddArc(rect.Left,rect.Top,rect.Height,rect.Height,190f,80f);
   ClientPath.AddArc(rect.Right-rect.Height,rect.Top,rect.Height,rect.Height,270f,80f);
   ClientPath.CloseFigure();
   return ClientPath;
  }
 
  private void DrawYinYing(Graphics gr,bool xiacen)
  {
   Rectangle rect= this.ClientRectangle;
   rect.Inflate(-(rect.Width/10),-(rect.Height)/4);
   float bf1=rect.Width/100f;
   float bf2=rect.Height/100f;
  
   rect.Y=rect.Y+this.ClientRectangle.Height/4;
   if(xiacen)
   {
    rect.Y=rect.Y+4;
   }
   GraphicsPath path;
  
   for(int a=1;a<33;a++)
   {
    float bf3=bf1*a;
    float bf4=bf2*a;
    Rectangle rect1=rect;
    rect1.Inflate(-(int)bf3,-(int)bf4);
    path=GetGraphicsPath(rect1);
       
    int r=backColor.R;
    int g=backColor.G;
    int b=backColor.B;
    r=r+3*a;
    g=g+3*a;
    b=b+3*a;
    if(r>255) r=255;
    if(g>255) g=255;
    if(b>255) b=255;
    gr.FillPath(new SolidBrush(Color.FromArgb(r,g,b)),path);
   }
  }
 
  private void DrawGaoLiang(Graphics g,bool xiacen)
  {
   Rectangle rect= this.ClientRectangle;
   rect.Inflate(-4,-4);
  
   if(xiacen)
   {
    rect.Y=rect.Y+4;
   }
   GraphicsPath path=GetGraphicsPath1(rect);
   RectangleF rect1=path.GetBounds();
   rect1.Height=rect1.Height+1;
   g.FillPath(new LinearGradientBrush(rect1,
    Color.FromArgb(0xff,0xff,0xff,0xff),
    Color.FromArgb(0xff,backColor),LinearGradientMode.Vertical),path);
  }
 
  private void DrawText(Graphics g,bool xiacen)
  {
   Rectangle rect= this.ClientRectangle;
   Rectangle rect1= this.ClientRectangle;
   StringFormat stringFormat=new StringFormat();
   stringFormat.Alignment=StringAlignment.Center;
   stringFormat.LineAlignment=StringAlignment.Center;
   rect.Y=this.ClientRectangle.Height/5;
   if(xiacen)
   {
    rect.Y=rect.Y+4;
    rect1.Y=rect1.Y+4;
   }
  
   Font font=this.Font;
  
  
   if(mouseMove)
   {
    font=new Font(this.Font,FontStyle.Underline);
   }
  
   g.DrawString(this.Text,font,
    new SolidBrush(Color.FromArgb(0x66,backColor)),rect,stringFormat);
   g.DrawString(this.Text,font,new SolidBrush(this.ForeColor),rect1,stringFormat);
  }

  private void UserControl1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
  {
   if(XiaCen==false)
   {
    XiaCen=true;
    this.Refresh();
   }
  }
 
  private void UserControl1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
  {
   if(XiaCen==true)
   {
    XiaCen=false;
    this.Refresh();
   }
  }

  private void UserControl1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
  {
  
  
  }
 
  protected override void OnPaint(PaintEventArgs e)
  {
  
   base.OnPaint(e);
   e.Graphics.FillRectangle(new SolidBrush(backCol

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved