2012-12-12 36 views
6

Tôi đang tìm cách tạo văn bản trong một nhãn có thể mở rộng thành nó trong toàn bộ vùng chứa chính. Một trong những cách tôi có thể nghĩ là để có được kích thước container trên cửa sổ lại kích thước và sau đó tăng hoặc giảm kích thước font cho phù hợp, nhưng điều đó sẽ hạn chế khả năng của nó.Làm thế nào tôi có thể làm cho văn bản nhãn có thể mở rộng trong ứng dụng Winforms

Tự hỏi nếu có cách nào tốt hơn để làm điều này, có thể hoạt động giống như một thuộc tính neo trong ứng dụng Winforms.

Trả lời

4

Tôi biết câu trả lời được ẩn ở đâu đó trong đối tượng đồ họa và sự kiện vẽ, chơi xung quanh với 2 từ khóa này đã giải quyết được vấn đề của tôi. Đây là giải pháp làm việc trong trường hợp cụ thể của tôi.

Tôi chỉ đơn giản là thay đổi kích thước font chữ về sự kiện sơn cho nhãn của tôi như sau:

private void myLabel_Paint(object sender, PaintEventArgs e) 
{ 
    float fontSize = NewFontSize(e.Graphics, parentContainer.Bounds.Size, myLabel.Font, myLabel.Text); 
    Font f = new Font("Arial", fontSize, FontStyle.Bold); 
    myLabel.Font = f; 
} 

đâu như chức năng NewFontSize trông như thế này:

public static float NewFontSize(Graphics graphics, Size size, Font font, string str) 
{ 
    SizeF stringSize = graphics.MeasureString(str, font); 
    float wRatio = size.Width/stringSize.Width; 
    float hRatio = size.Height/stringSize.Height; 
    float ratio = Math.Min(hRatio, wRatio); 
    return font.Size * ratio; 
} 

Tôi cũng tìm thấy bài viết này hữu ích http://www.switchonthecode.com/tutorials/csharp-tutorial-font-scaling

+0

Hoạt động rất tốt! Cảm ơn. – nozzleman

+1

ParentContainer là gì ??? Bạn có thể gửi url có mã đầy đủ không? Cảm ơn! – Xarialon

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