首页 > Windows开发 > 详细

c# 自定义按钮,渐变颜色(含中心向四周渐变,单方向渐变)

时间:2019-07-19 11:30:32      阅读:318      评论:0      收藏:0      [点我收藏+]

废话不多言,直接代码:

public class RoundButton : Button
    {
        bool clickBool = false;
        //1.设置圆形
        //2.设置渐变色
        //3.设置tooltip
        //4.设置点击之后渐变色,tooltip
        ToolTip toolTip = new ToolTip();
        public RoundButton()
        {
            toolTip.AutoPopDelay = 1000;
            toolTip.SetToolTip(this, "A: B分列选图。");
        }
        [Browsable(true), DefaultValue(90), Description("按钮主体颜色渐变方向,X轴顺时针开始")]
        [Category("Appearance")]
        public int GradientAngle { get; set; }
        protected override void OnPaint(PaintEventArgs pevent)
        {
            base.OnPaintBackground(pevent);
            RectangleF rect = new RectangleF(0, 0, this.Width, this.Height);

            //两种brush使用 LinearGradientBrush和PathGradientBrush
            //Graphics g = pevent.Graphics;
            //g.SmoothingMode = SmoothingMode.AntiAlias;//抗锯齿
            //Color FColor = Color.Orange;
            //Color TColor = Color.White;
            //Brush b = new LinearGradientBrush(rect, FColor, TColor, 45, false);
            //g.FillEllipse(b, pevent.ClipRectangle);
            if (!clickBool)
            {
                Graphics g = pevent.Graphics;
                g.SmoothingMode = SmoothingMode.AntiAlias;//抗锯齿
                GraphicsPath graphicsPath = new GraphicsPath();
                graphicsPath.AddEllipse(rect);
                PathGradientBrush pathGradientBrush = new PathGradientBrush(graphicsPath);
                pathGradientBrush.CenterColor = Color.White;
                pathGradientBrush.CenterPoint = new PointF(this.Width / 2, this.Height / 2);
                pathGradientBrush.SurroundColors = new Color[] { Color.Orange };
                g.FillPath(pathGradientBrush, graphicsPath);
            }
            else
            {
                Graphics g = pevent.Graphics;
                g.SmoothingMode = SmoothingMode.AntiAlias;//抗锯齿
                GraphicsPath graphicsPath = new GraphicsPath();
                graphicsPath.AddEllipse(rect);
                PathGradientBrush pathGradientBrush = new PathGradientBrush(graphicsPath);
                pathGradientBrush.CenterColor = Color.White;
                pathGradientBrush.CenterPoint = new PointF(this.Width / 2, this.Height / 2);
                pathGradientBrush.SurroundColors = new Color[] { Color.Blue };
                g.FillPath(pathGradientBrush, graphicsPath);
            }
        }

        protected override void OnMouseClick(MouseEventArgs e)
        {
            base.OnMouseClick(e);
            clickBool = !clickBool;
            if (clickBool)
            {
                toolTip.SetToolTip(this, "4 幅图任选。");
            }
            else
            {
                toolTip.SetToolTip(this, "A: B分列选图。");
            }
        }
    }

  

c# 自定义按钮,渐变颜色(含中心向四周渐变,单方向渐变)

原文:https://www.cnblogs.com/gaara-zhang/p/11211829.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!