⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usercontrol1.cs

📁 漂亮的按钮控件,以小动物的形式显示.能使你的程序界面看上去更形象生动.具有与众不同的亮点
💻 CS
字号:
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 partial 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> 
        public override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (components != null)
                    components.Dispose();
            }
            base.Dispose(disposing);
        }

       

        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(backColor), 0, 0, this.Width, this.Height);
            e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
            e.Graphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
            Rectangle rect = new Rectangle(0, 0, this.Width, this.Height);
            GraphicsPath ClientPath = GetGraphicsPath(rect);
            e.Graphics.FillPath(new SolidBrush(backColor), ClientPath);
            this.Region = new System.Drawing.Region(ClientPath);
            DrawYinYing(e.Graphics, XiaCen);
            DrawGaoLiang(e.Graphics, XiaCen);
            DrawText(e.Graphics, XiaCen);

            if (this.Focused)
            {
                e.Graphics.DrawPath(new Pen(Color.FromArgb(0x22, 0xff, 0xff, 0xff), 3), ClientPath);
            }

        }





        private void UserControl1_BackColorChanged(object sender, System.EventArgs e)
        {
            int r = BackColor.R;
            int g = BackColor.G;
            int b = BackColor.B;
            r = r + 0x22;
            g = g + 0x22;
            b = b + 0x22;
            if (r > 255) r = 255;
            if (g > 255) g = 255;
            if (b > 255) b = 255;
            backColor = Color.FromArgb(r, g, b);
        }

        private void UserControl1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            if (XiaCen == false && e.KeyCode == Keys.Space)
            {
                XiaCen = true;
                this.Refresh();
            }
        }

        private void UserControl1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            if (XiaCen == true && e.KeyCode == Keys.Space)
            {
                XiaCen = false;
                this.Refresh();
            }
        }

        private void UserControl1_MouseEnter(object sender, System.EventArgs e)
        {
            if (mouseMove == false)
            {
                mouseMove = true;
                this.Refresh();
            }
        }

        private void UserControl1_MouseLeave(object sender, System.EventArgs e)
        {
            if (mouseMove == true)
            {
                mouseMove = false;
                this.Refresh();
            }
        }

    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -