添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

.Net 下进行 WinForm 开发, GroupBox 是经常要用到的一个控件。但是 GroupBox 自身的边框是灰白色的,其样式很难令开发者满意。在不借用第三方控件的情况下,通过其的 Paint 事件对 GroupBox 进行重画,也可以很方便的修改其边框颜色 / 样式。

简要说一下实现思路。首先用 Clear 方法清除 GroupBox 的显示,接着再用合适的样式把 GroupBox 画出来。把 GroupBox 拆分为 4 个圆角,一行标题文字和数段直线等元素,把这些元素摆放在合适的位置,拼凑出 GroupBox 的外框。定义 4 Rectangle (用于后面的画圆角),确定它们的大小和位置;然后在确切的位置上画 4 个弧段,按圆角在 GroupBox 上的位置确定其角度;接着在对应的位置画出 GroupBox 标题和几条直线,就大功告成了。只需简单修改代码中的设置颜色语句,便可以完成 GroupBox 边框颜色的更换了。

using System;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Drawing.Drawing2D;

usingSystem.Text;

usingSystem.Windows.Forms;

namespaceWindowsApplication2

public partial class Form1 : Form

public Form1()

InitializeComponent();

private void groupBox1_Paint(objectsender, PaintEventArgs e

e.Graphics.Clear(groupBox1.BackColor);

Rectangle Rtg_LT = newRectangle();

Rectangle Rtg_RT = newRectangle();

Rectangle Rtg_LB = newRectangle();

Rectangle Rtg_RB = newRectangle();

Rtg_LT.X = 0; Rtg_LT.Y = 7; Rtg_LT.Width= 10; Rtg_LT.Height = 10;

Rtg_RT.X = e.ClipRectangle.Width -11; Rtg_RT.Y = 7; Rtg_RT.Width = 10; Rtg_RT.Height = 10;

Rtg_LB.X = 0; Rtg_LB.Y =e.ClipRectangle.Height - 11; Rtg_LB.Width = 10; Rtg_LB.Height = 10;

Rtg_RB.X = e.ClipRectangle.Width - 11;Rtg_RB.Y = e.ClipRectangle.Height - 11; Rtg_RB.Width = 10; Rtg_RB.Height =10;

Color color = Color.FromArgb(51,94, 168);

Pen Pen_AL = new Pen(color,1);

Pen_AL.Color = color;

Brush brush = newHatchBrush(HatchStyle.Divot, color);

e.Graphics.DrawString(groupBox1.Text, groupBox1.Font, brush, 6, 0);

e.Graphics.DrawArc(Pen_AL, Rtg_LT,180, 90);

e.Graphics.DrawArc(Pen_AL, Rtg_RT,270, 90);

e.Graphics.DrawArc(Pen_AL, Rtg_LB,90, 90);

e.Graphics.DrawArc(Pen_AL, Rtg_RB,0, 90);

e.Graphics.DrawLine(Pen_AL, 5, 7,6, 7);

e.Graphics.DrawLine(Pen_AL,e.Graphics.MeasureString(groupBox1.Text, groupBox1.Font).Width + 3, 7,e.ClipRectangle.Width - 7, 7);

e.Graphics.DrawLine(Pen_AL, 0, 13,0, e.ClipRectangle.Height - 7);

e.Graphics.DrawLine(Pen_AL, 6,e.ClipRectangle.Height - 1, e.ClipRectangle.Width - 7, e.ClipRectangle.Height -1);

e.Graphics.DrawLine(Pen_AL,e.ClipRectangle.Width - 1, e.ClipRectangle.Height - 7, e.ClipRectangle.Width -1, 13);

} 运行效果图如下:

代码稍显繁琐,但也很好的实现了修改 GroupBox 边框样式 / 颜色的效果。

在.Net下进行WinForm开发,GroupBox是经常要用到的一个控件。但是GroupBox自身的边框是灰白色的,其样式很难令开发者满意。在不借用第三方控件的情况下,通过其的Paint事件对GroupBox进行重画,也可以很方便的修改其边框颜色/样式。  简要说一下实现思路。首先用Clear方法清除GroupBox的显示,接着再用合适的样式把GroupBox画出来。把GroupBox拆分为
@TO## 标题C 欢迎 使用 Markdown编辑器 你好! 这是你第一次 使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何 使用 Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行
using System.Drawing.Drawing2D; 引用绘图类。 回到Form1的设计页面,打开属性页面,进入 事件 列表,找到 Paint 事件 ,会自动生成 Paint 事件 的代码。 在该 事件 下写以下代码。 private void Form1_ Paint (object sender, Paint EventArgs...
自己做项目时研究的  希望对看官有所帮助 因为在网站上看了好多对于 边框 颜色 改变 不是重写 Paint 方法  就是 把 边框 隐藏 还有就是重新在原有的方法上扩展 Group Box 的属性 Group Box 边框 好像是 圆角矩形的  重写的方法好像是 直角矩形  费解!~~反正不是本人想要的  今天我跟大家唠嗑 我自己研究的小方法 1.因为WIN7和XP系统不一样所以那个把 Group Box
private void Group Box _ Paint (object sender, Paint EventArgs e) if (sender != null && sender is Group Box ) Group Box gbx = sender a...
/**************************************************************************** * Qt Q Group Box StyleSheet 边框 设置 * 声明: * 之前陈颖奇问到这个效果要怎么做出来,查了点资料后直接给他了,自己没有 * 进行相关测试,现在貌似自己... ORA-14400: 插入的分区关键字未映射到任何分区】/【ORA-14400: inserted partition key does not map to any partition 21088