我有 2 个组框,我想对其进行更多自定义,并且我不想求助于带有标签的面板(这意味着如果我必须为面板和父控件设置相同的背景颜色)想要一个边框,因为标签必须设置颜色以覆盖文本后面的边框)。
我设法通过捕获绘制事件并使用以下代码来更改边框颜色:
Graphics gfx = e.Graphics;
Pen p = new Pen(Color.FromArgb(86, 136, 186), 3);
GroupBox gb = (GroupBox)sender;
Rectangle r = new Rectangle(0, 0, gb.Width, gb.Height);
gfx.DrawLine(p, 0, 5, 0, r.Height - 2);
gfx.DrawLine(p, 0, 5, 10, 5);
gfx.DrawLine(p, 62, 5, r.Width - 2, 5);
gfx.DrawLine(p, r.Width - 2, 5, r.Width - 2, r.Height - 2);
gfx.DrawLine(p, r.Width - 2, r.Height - 2, 0, r.Height - 2);
我的问题是,像这样,如果标题太长,那么它会与边框重叠。因为它与顶部的左侧边界重叠 - 这很容易通过调整第二DrawLine
行来解决。但是我想检测文本的 x 和宽度测量值,以便我可以正确定位边框。
有谁知道如何做到这一点?我已经在谷歌上看了一段时间,但没有什么能引起我的注意。我知道标题是通过设置的GroupBox.Text
。
还请说明我是否需要任何其他测量值,基于我也在更改边框厚度,所以如果字体很小但边框从中间开始为 10 像素会看起来很奇怪......
提前致谢。
问候,
理查德