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

废话不多言,直接代码:

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# 自定义按钮,渐变颜色(含中心向四周渐变,单方向渐变)

上一篇:Spring Security(三十七):Part IV. Web Application Security


下一篇:axios 本地配置多个类型请求