返回

给你的Winform 圆角组件添砖加瓦,实现美丽的圆角效果

后端

圆角矩形绘制之Paint事件

使用Paint事件来实现圆角组件的步骤如下:

  1. 在控件的Paint事件处理程序中,首先调用base.OnPaint(e)方法来绘制控件的默认内容。
  2. 然后,使用Graphics对象和DrawRoundedRectangle方法来绘制圆角矩形。
  3. 最后,调用ControlPaint.DrawBorder方法来绘制控件的边框。

绘制圆角之扩展方法

为了能够在不同的控件中重复使用绘制圆角的代码,我们可以将这段代码提取到一个扩展方法中。这样,我们只需要在需要绘制圆角的控件中调用这个扩展方法即可。

以下是绘制圆角的扩展方法代码:

public static class RoundRectangleExtension
{
    public static void DrawRoundedRectangle(this Graphics g, Pen pen, Rectangle rect, int radius)
    {
        GraphicsPath path = new GraphicsPath();
        path.AddArc(rect.X, rect.Y, radius * 2, radius * 2, 180, 90);
        path.AddArc(rect.X + rect.Width - radius * 2, rect.Y, radius * 2, radius * 2, 270, 90);
        path.AddArc(rect.X + rect.Width - radius * 2, rect.Y + rect.Height - radius * 2, radius * 2, radius * 2, 0, 90);
        path.AddArc(rect.X, rect.Y + rect.Height - radius * 2, radius * 2, radius * 2, 90, 90);
        path.CloseAllFigures();
        g.DrawPath(pen, path);
    }
}

避免使用e.ClipRectangle获取控件区域范围

在使用Paint事件来实现圆角组件时,不要通过事件参数e.ClipRectangle获取控件区域范围。这是因为e.ClipRectangle获取的是控件的剪裁区域,而不是控件的实际区域。如果我们使用e.ClipRectangle来绘制圆角矩形,那么圆角矩形将会被剪裁,导致圆角效果不完整。

设置控件背景透明

为了使圆角组件的圆角效果更加明显,我们需要将控件的背景设置为透明。我们可以通过以下步骤来设置控件背景透明:

  1. 在控件的构造函数中,调用SetStyle(ControlStyles.SupportsTransparentBackColor, true)方法来支持控件背景透明。
  2. 将控件的BackColor属性设置为Color.Transparent

写在最后

通过使用Paint事件和扩展方法,我们可以轻松地在Winform中实现圆角组件。在使用Paint事件时,不要通过事件参数e.ClipRectangle获取控件区域范围,并记得将控件的背景设置为透明。希望本文能够帮助你实现更美观的圆角组件。