2013-02-01 79 views
3

可能重複:
How can I change the border thickness of a Groupbox on a windows form in C#?改變邊界在分組框組件

傢伙

我使用Visual Studio中組框」。但是組框中的邊框很小。我想知道是否有辦法通過給它一個顏色或者更厚的邊緣來編輯邊框?

enter image description here

爲u在圖像中看到它是很難看到它周圍的邊框。

任何人都可以幫助我嗎?使用System.Drawing.Drawing2D

using System.Drawing; 

;:

+1

http://stackoverflow.com/questions/10997977/how-can-i-change-the-border-thickness-of-a-groupbox-on-a-windows-form-in-c –

+0

檢查此:https://social.msdn.microsoft.com/Forums/windows/en-US/cfd34dd1-b6e5-4b56-9901-0dc3d2ca5788/changing-border-color-of-groupbox?forum=winforms – Mohammadreza

回答

4

您可以使用此

private void Form1_Load(object sender, EventArgs e) 
    { 
     myGroupBox myGroupBox = new myGroupBox(); 
     myGroupBox.Text = "GroupBox1"; 

     this.Controls.Add(myGroupBox); 

    } 




    public static GraphicsPath CreatePath(float x, float y, float width, float height, 
            float radius, bool RoundTopLeft, bool RoundTopRight, bool RoundBottomRight, bool RoundBottomLeft) 
    { 
     float xw = x + width; 
     float yh = y + height; 
     float xwr = xw - radius; 
     float yhr = yh - radius; 
     float xr = x + radius; 
     float yr = y + radius; 
     float r2 = radius * 2; 
     float xwr2 = xw - r2; 
     float yhr2 = yh - r2; 

     GraphicsPath p = new GraphicsPath(); 
     p.StartFigure(); 

     //Top Left Corner 

     if (RoundTopLeft) 
     { 
      p.AddArc(x, y, r2, r2, 180, 90); 
     } 
     else 
     { 
      p.AddLine(x, yr, x, y); 
      p.AddLine(x, y, xr, y); 

     } 

     //Top Edge 
     p.AddLine(xr, y, xwr, y); 

     //Top Right Corner 

     if (RoundTopRight) 
     { 
      p.AddArc(xwr2, y, r2, r2, 270, 90); 
     } 
     else 
     { 
      p.AddLine(xwr, y, xw, y); 
      p.AddLine(xw, y, xw, yr); 
     } 


     //Right Edge 
     p.AddLine(xw, yr, xw, yhr); 

     //Bottom Right Corner 

     if (RoundBottomRight) 
     { 
      p.AddArc(xwr2, yhr2, r2, r2, 0, 90); 
     } 
     else 
     { 
      p.AddLine(xw, yhr, xw, yh); 
      p.AddLine(xw, yh, xwr, yh); 
     } 


     //Bottom Edge 
     p.AddLine(xwr, yh, xr, yh); 

     //Bottom Left Corner   

     if (RoundBottomLeft) 
     { 
      p.AddArc(x, yhr2, r2, r2, 90, 90); 
     } 
     else 
     { 
      p.AddLine(xr, yh, x, yh); 
      p.AddLine(x, yh, x, yhr); 
     } 

     //Left Edge 
     p.AddLine(x, yhr, x, yr); 

     p.CloseFigure(); 
     return p; 
    } 


    class myGroupBox : GroupBox 
    { 
     public myGroupBox() 
     { 
      base.BackColor = Color.Transparent; 

     } 
     [Browsable(false)] 
     public override Color BackColor 
     { 
      get 
      { 
       return base.BackColor; 
      } 
      set 
      { 
       base.BackColor = value; 
      } 
     } 

     private Color backColor = Color.Transparent; 

     public Color ActualBackColor 
     { 
      get { return this.backColor; } 

      set { this.backColor = value; } 
     } 

     protected override void OnPaint(PaintEventArgs e) 
     { 

      Size tSize = TextRenderer.MeasureText(this.Text, this.Font); 

      Rectangle borderRect = e.ClipRectangle; 

      borderRect.Y += tSize.Height/2; 

      borderRect.Height -= tSize.Height/2; 

      GraphicsPath gPath = CreatePath(0, borderRect.Y, (float)(this.Width - 1), borderRect.Height - 1, 5, true, true, true, true); 

      e.Graphics.FillPath(new SolidBrush(ActualBackColor), gPath); 

      e.Graphics.DrawPath(new Pen(Color.Red), gPath); 

      borderRect.X += 6; 
      borderRect.Y -= 7; 

      e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), borderRect); 
     } 
    }