もう少しカスタマイズしたい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);
私の問題は、このように、キャプションが長すぎると境界線に重なってしまうことです。そのままでは、上部の左側の境界線に重なっています。これは、2DrawLine
行目を調整するだけで簡単に解決できます。ただし、境界線を適切に配置できるように、テキストの x と幅の測定値を検出したいと思います。
誰もこれを行う方法を知っていますか? 私はしばらくGoogleを見てきましたが、何も飛び出していません。キャプションが で設定されていることは知っていGroupBox.Text
ます。
また、境界線の太さも変更しているので、フォントが小さいのに境界線が半分下から10ピクセルだった場合に奇妙に見えることに基づいて、他に必要な測定値があるかどうかも教えてください...
前もって感謝します。
よろしく、
リチャード