自学内容网 自学内容网

WinForm 美化秘籍:轻松实现 Panel 圆角虚线边框


1、引言

在 Winform 应用程序开发中,美化用户界面(UI)是提升用户体验的关键。默认情况下,Panel 控件的边框样式较为单调,无法满足一些个性化的设计需求。如果你希望为你的应用程序增添一丝独特的风格,不妨考虑给 Panel 添加圆角和虚线边框。本文将带你一步步了解如何通过自定义绘制来实现这一效果。

2、案例实现

1、创建自定义 Panel 类

我们首先需要创建一个继承自 Panel 的新类 CustomPanel,并在其中重写 OnPaint 方法,以便我们可以控制面板的绘制方式。为了确保控件在调整大小时正确重绘,我们还需要设置 DoubleBuffered 属性并启用 ResizeRedraw 样式。

public class CustomPanel : Panel
{
    private Pen _borderPen = new Pen(Color.Black, 2) { DashStyle = System.Drawing.Drawing2D.DashStyle.Dash };
    private int _cornerRadius = 10;

    public CustomPanel()
    {
        this.DoubleBuffered = true;
        this.SetStyle(ControlStyles.ResizeRedraw, true);
    }

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

        GraphicsPath path = GetRoundedRectangle(this.ClientRectangle, _cornerRadius);
        this.Region = new Region(path);

        // 绘制虚线边框
        e.Graphics.DrawPath(_borderPen, path);
    }
}

2、定义圆角矩形

为了让 Panel 具有圆角效果,我们需要定义一个方法 GetRoundedRectangle 来生成一个带有圆角的 GraphicsPath。这个路径将在 OnPaint 方法中被用来裁剪控件的区域,并作为绘制边框的基础。

private GraphicsPath GetRoundedRectangle(Rectangle bounds, int radius)
{
    int diameter = radius * 2;
    Size size = new Size(diameter, diameter);
    Rectangle arc = new Rectangle(bounds.Location, size);
    GraphicsPath path = new GraphicsPath();

    if (radius == 0)
    {
        path.AddRectangle(bounds);
        return path;
    }

    // Top left arc
    path.AddArc(arc, 180, 90);
    // Top right arc
    arc.X = bounds.Right - diameter;
    path.AddArc(arc, 270, 90);
    // Bottom right arc
    arc.Y = bounds.Bottom - diameter;
    path.AddArc(arc, 0, 90);
    // Bottom left arc
    arc.X = bounds.Left;
    path.AddArc(arc, 90, 90);
    path.CloseFigure();

    return path;
}

3. 使用自定义 Panel

创建好 CustomPanel 后,你可以在设计器中添加它,或者在代码中动态实例化。如果想要在设计器中看到自定义属性,可以将类放在一个可识别的地方,如项目中的单独文件。

4. 调整属性

_borderPen 可以用来设置边框的颜色、宽度和样式。
_cornerRadius 用于控制圆角的半径大小。你可以将其设为公开属性,以便在属性窗口中调整。

5、使用背景图片来实现

Panel 圆角虚线边框 也可以通过背景图片来实现这一效果。准备圆角虚线边框的png 图片,设置 Panel 面板的背景图片为虚线边框图片即可。
在这里插入图片描述
在这里插入图片描述

5、拓展:使用 Panel 的 Paint重绘单独实现虚线边框效果

 private void panel1_Paint(object sender, PaintEventArgs e)
 {
     Graphics g = e.Graphics;
     Pen pen = new Pen(Color.Black, 1); // 设置虚线颜色和粗细
     pen.DashStyle = DashStyle.Dot; // 设置虚线样式

     // 绘制虚线边框
     g.DrawRectangle(pen, this.panel1.ClientRectangle.Left, this.panel1.ClientRectangle.Top,
                     this.panel1.ClientRectangle.Width - 1, this.panel1.ClientRectangle.Height - 1);

     pen.Dispose(); // 释放Pen对象
 }

注意:这里设计界面中Panel 的 BorderStyle 设置 为 None 。

3、实现效果

在这里插入图片描述

4、总结

通过上述简单的几个步骤,我们就能够为 WinForms 应用程序中的 Panel 控件添加漂亮的圆角和虚线边框,从而显著提升应用的视觉吸引力。无论是用于个人项目还是企业级应用,这种定制化的 UI 元素都能让您的应用程序脱颖而出。希望这篇文章能为正在寻找 UI 美化解决方案的开发者们提供一些灵感和帮助。


原文地址:https://blog.csdn.net/qq_21419015/article/details/144762921

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!