2012-05-20 61 views
10

Tôi đang sử dụng mã này để làm cho hình thức không có phong cách biên giới:Biểu mẫu có đường viền tròn trong C#?

this.FormBorderStyle = FormBorderStyle.None; 

tôi cần phải thực hiện các cạnh tròn trên biểu mẫu.

Có cách nào dễ dàng không? Tôi phải làm nó như thế nào?

+0

Câu trả lời cho câu hỏi này có thể hữu ích: http://stackoverflow.com/questions/5092216/c-sharp-form-with-custom-border-and-rounded-edges –

+0

Điều đó có vẻ tuyệt vời, nhưng um. .. Tôi mới nên ... tôi không biết phải đặt tất cả những thứ đó vào đâu. Tôi biết nơi để đặt mã dưới hình thức() điều, nhưng khác là khó khăn. Bạn có thể giúp tôi được không? –

Trả lời

2

Hãy xem này: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.region.aspx

Lớp Mẫu kế thừa từ lớp Control, vì vậy hãy thử làm những mẫu tương tự mà bạn có vào liên kết để sở hữu khu vực các Mẫu của (và làm điều đó trên hình thức sự kiện tất nhiên):

// This method will change the square button to a circular button by 
// creating a new circle-shaped GraphicsPath object and setting it 
// to the RoundButton objects region. 
private void roundButton_Paint(object sender, 
    System.Windows.Forms.PaintEventArgs e) 
{ 

    System.Drawing.Drawing2D.GraphicsPath buttonPath = 
     new System.Drawing.Drawing2D.GraphicsPath(); 

    // Set a new rectangle to the same size as the button's 
    // ClientRectangle property. 
    System.Drawing.Rectangle newRectangle = roundButton.ClientRectangle; 

    // Decrease the size of the rectangle. 
    newRectangle.Inflate(-10, -10); 

    // Draw the button's border. 
    e.Graphics.DrawEllipse(System.Drawing.Pens.Black, newRectangle); 

    // Increase the size of the rectangle to include the border. 
    newRectangle.Inflate(1, 1); 

    // Create a circle within the new rectangle. 
    buttonPath.AddEllipse(newRectangle); 

    // Set the button's Region property to the newly created 
    // circle region. 
    roundButton.Region = new System.Drawing.Region(buttonPath); 

} 
0
public static void RoundBorderForm(Form frm) 
    { 

     Rectangle Bounds = new Rectangle(0, 0, frm.Width, frm.Height); 
     int CornerRadius = 20; 
     System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath(); 
     path.AddArc(Bounds.X, Bounds.Y, CornerRadius, CornerRadius, 180, 90); 
     path.AddArc(Bounds.X + Bounds.Width - CornerRadius, Bounds.Y, CornerRadius, CornerRadius, 270, 90); 
     path.AddArc(Bounds.X + Bounds.Width - CornerRadius, Bounds.Y + Bounds.Height - CornerRadius, CornerRadius, CornerRadius, 0, 90); 
     path.AddArc(Bounds.X, Bounds.Y + Bounds.Height - CornerRadius, CornerRadius, CornerRadius, 90, 90); 
     path.CloseAllFigures(); 

     frm.Region = new Region(path); 
     frm.Show(); 
    } 
+2

Vui lòng cung cấp ngữ cảnh vì sao điều này giải quyết được vấn đề của OP; Mã không bao giờ nên thay thế cho các từ! Ngoài ra, cảm ơn vì đã đóng góp cho [như vậy]. – jpaugh

1

tôi biết các câu hỏi đã được trả lời, tôi muốn thêm một sự thay thế và ngớ ngẩn nHƯNG một thực tế không thực sự khuyến khích từ câu hỏi của bạn không hạn chế các câu trả lời ra đời mã ...

  • Tạo, hình ảnh vuông trống với màu nền của bạn là điền vào, sau đó xóa các góc tròn phía trên bên trái phải minh bạch, lặp lại điều này cho tất cả các góc
  • Đặt một màu rất khó xảy ra như màu nền mẫu của bạn
  • Set màu này như TransparencyKey vào mẫu của bạn
  • Thêm những hình ảnh như PictureBox và đặt chúng vào các góc tương ứng

Viola!

Các vấn đề liên quan