返回

Winform控件优化之圆角按钮【各种实现中的推荐做法】(下)

后端

ButtonPro 按钮:扩展与优化
ButtonPro 按钮继承自Button,既提供了Button的原生功能,又提供了扩展功能。除了圆角以外,还实现了圆形、圆角矩形的脚尖效果、边框大小和颜色、背景渐变颜色等等。
ButtonPro 的实现基于继承。它继承了 Button 的所有属性和方法,并扩展了新的属性和方法来实现圆角、边框等效果。ButtonPro 的核心代码如下:

public class ButtonPro : Button
{
    private int _cornerRadius;
    private Color _borderColor;
    private int _borderWidth;

    public ButtonPro()
    {
        _cornerRadius = 10;
        _borderColor = Color.Black;
        _borderWidth = 1;
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        Graphics g = e.Graphics;
        g.SmoothingMode = SmoothingMode.AntiAlias;

        // 绘制圆角矩形
        Rectangle rect = new Rectangle(0, 0, this.Width, this.Height);
        GraphicsPath path = new GraphicsPath();
        path.AddRoundedRectangle(rect, _cornerRadius);

        // 绘制边框
        if (_borderWidth > 0)
        {
            g.DrawPath(new Pen(_borderColor, _borderWidth), path);
        }

        // 填充背景
        if (_gradientColors.Count > 0)
        {
            g.FillPath(new LinearGradientBrush(rect, _gradientColors[0], _gradientColors[1], 90), path);
        }
        else
        {
            g.FillPath(new SolidBrush(this.BackColor), path);
        }
    }
}

最终解决方案
在经过一系列的优化之后,最终的解决方案是ButtonPro按钮。ButtonPro按钮继承自Button,既提供了Button原生功能,又提供了扩展功能,除了圆角以外,还实现了圆形、圆角矩形的脚尖效果、边框大小和颜色、背景渐变颜色等等。ButtonPro按钮的实现基于继承,它继承了Button的所有属性和方法,并扩展了新的属性和方法来实现圆角、边框等效果。

ButtonPro按钮的性能良好,在各种场景下都能流畅运行。它占用内存小,资源消耗低,即使在低配置的计算机上也能正常工作。ButtonPro按钮的代码简洁易懂,维护方便,即使是初学者也能轻松修改和扩展它的功能。