【原创】重绘winform的GroupBox

摘要:
功能:使用System重新绘制winform的GroupBox以调整边框颜色和边框宽度;使用System.Collections。通用的使用系统。组件模型;使用系统。绘画使用系统。数据使用系统。Linq;使用系统。文本使用System.Windows.For
功能:重绘winform的GroupBox,以便调整边框颜色和边框宽度
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;

namespace JSHYSC_CtrlLib
{
    public partial class Ctrl_GroupBox : GroupBox
    {
        private Color borderLineColor =System.Drawing.SystemColors.GradientActiveCaption;
        /// <summary>
        /// 边框线颜色
        /// </summary>
        public Color BorderLineColor
        {
            get { return borderLineColor; }
            set { borderLineColor = value; }
        }

        private float borderLineWidth = 1;
        /// <summary>
        /// 边框线宽度
        /// </summary>
        public float BorderLineWidth
        {
            get { return borderLineWidth; }
            set { borderLineWidth = value; }
        }

        public Ctrl_GroupBox()
        {
            InitializeComponent();
        }

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

            e.Graphics.Clear(base.BackColor);

            //圆弧直径长度
            int radius = 20;
            int width = e.ClipRectangle.Width, height = e.ClipRectangle.Height;
            int titleStartX = 15;
            float titleWidth = e.Graphics.MeasureString(base.Text, base.Font).Width;
            float titleHeight = e.Graphics.MeasureString(base.Text, base.Font).Height;

            Pen pen = new Pen(borderLineColor, (float)borderLineWidth);

            //左上角圆弧
            e.Graphics.DrawArc(pen, new Rectangle(0, (int)(titleHeight / 2), radius, radius), 180, 90);

            //上边框,标题前半部分
            e.Graphics.DrawLine(pen, radius / 2, (titleHeight - 1) / 2, radius + titleStartX-3, (titleHeight - 1) / 2);

            //画笔
            SolidBrush brush = new SolidBrush(Color.Black);
            Font font = new System.Drawing.Font("宋体", 10, FontStyle.Bold);
            //标题
            e.Graphics.DrawString(base.Text, font, brush, radius / 2 + titleStartX, 0);

            //上边框,标题右半部分
            e.Graphics.DrawLine(pen, radius / 2 + titleStartX + titleWidth+3, (titleHeight - 1) / 2, (width - 1) - radius / 2, (titleHeight - 1) / 2);

            //右上角圆弧
            e.Graphics.DrawArc(pen, new Rectangle((width - 1) - radius, (int)(titleHeight / 2), radius, radius), 270, 90);

            //右边框
            e.Graphics.DrawLine(pen, width - 1, (int)(titleHeight / 2) + radius / 2, width - 1, (height - 1) - radius / 2);

            //右下角圆弧
            e.Graphics.DrawArc(pen, new Rectangle((width - 1) - radius, (height - 1) - radius, radius, radius), 0, 90);

            //下边框
            e.Graphics.DrawLine(pen, (width - 1) - radius / 2, height - 1, radius / 2, height - 1);

            //左下角圆弧
            e.Graphics.DrawArc(pen, new Rectangle(0, (height - 1) - radius, radius, radius), 90, 90);

            //左边框
            e.Graphics.DrawLine(pen, 0, (height - 1) - radius / 2, 0, (int)(titleHeight / 2) + radius / 2);
        }
    }
}

  

 

免责声明:文章转载自《【原创】重绘winform的GroupBox》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mysql主从不同步问题 Error_code: 1197实现自己的.NET Core配置Provider之Yaml下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android日志监听工具logcat命令详解(转)

Android日志系统提供了记录和查看系统调试信息的功能。日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用. 在使用logcat之前,请确保手机的USB调试模式已经开启,可以通过"Setting->Application->Development->USB debugging"来开启。 logc...

这几个IDEA高级调试技巧,用完就是香

一个项目启动两次 测试分布式项目时,经常要一个项目启动2次,不用将一个项目打开多次启动,配置一下即可 1.点击Edit Configurations 2.勾选Allow parallel run 3.依次点击如下2个按钮 条件断点 有如下代码,只想让它在i == 10的情况下停下来 @Test public void condition() {...

尝鲜党:Nexus5、6刷安卓M教程

说明:   进入recovery的命令:adb reboot recovery        进入bootloader的命令:adb reboot bootloader 概述 F:Nexus5AndroidMhammerhead-MPZ44Q>fastboot flash bootloader bootloader bootlo ader-hamm...

WinForm图片抽奖器

闲着蛋疼,写个抽奖器玩玩。界面:2个按钮(一个开始,一个停止),一个label显示当前抽中人的姓名或者编号,一个定时器。原理:在窗体加载的时候,首先加载好在配置文件设置的文件夹内的所有图片保存在一个List中,并且设置好timer的时间,最好是短一点,10-20毫秒之内。在timer的Tick事件中,随机指定一个路径。 详细代码:界面的布局就 省了。配置...

Winform应用的多语言设置

VS 提供了一种简单的方式来为应用设置多种语言——resx文件。下面演示具体的操作步骤。 1.首先新建 Winform 项目,向其添加控件,并命名 2.将 Form1 的 Localizable 属性设为 true, 设置该属性后,.net 将根据不同的语言,为应用程序生成不同的资源文件(resx文件) 3.将 Form1 的 Language 属性修改为...

WinForm开发中几种找控件的方法

#region 在当前控件集中查找ToolStripButtonprivate static ToolStripButton FindToolStripButton(Form owner, string controlId){ToolStripButton result;result = null;foreach (Control ctl in owner...