2012-12-17 21 views
6

Tôi đang cố gắng để đạt được các văn bản khung (sử dụng Windows Forms), ví dụ:Làm thế nào để tìm chiều rộng chuỗi trong C# (tính bằng pixel)

enter image description here

Chiều cao luôn là như nhau, vì chuỗi của tôi là ít hơn 20 ký tự. Điều gì về chiều rộng? Có cách nào để tự động nhận nó không?

+0

duplipcate có thể có: http://stackoverflow.com/questions/7714022/how-to-get-a-string-width – Default

+0

Có thể trùng lặp [Làm cách nào để chuyển đổi độ dài chuỗi thành đơn vị pixel?] (Http: //stackoverflow.com/questions/451903/how-can-i-convert-a-string-length-to-a-pixel-unit) –

Trả lời

10

Sử dụng Graphics.MeasureString()

Từ MSDN: http://msdn.microsoft.com/en-us/library/6xe5hazb.aspx

private void MeasureStringMin(PaintEventArgs e) 
{ 
    // Set up string. 
    string measureString = "Measure String"; 
    Font stringFont = new Font("Arial", 16); 

    // Measure string. 
    SizeF stringSize = new SizeF(); 
    stringSize = e.Graphics.MeasureString(measureString, stringFont); 

    // Draw rectangle representing size of string. 
    e.Graphics.DrawRectangle(new Pen(Color.Red, 1), 0.0F, 0.0F, stringSize.Width, stringSize.Height); 

    // Draw string to screen. 
    e.Graphics.DrawString(measureString, stringFont, Brushes.Black, new PointF(0, 0)); 
} 
4

Nếu bạn không cảm thấy như đối phó với các eventhandler Paint, bạn có thể thử các lớp TextRenderer. Nó có một phương thức tĩnh giống hệt với phương thức "MeasureString" trong câu trả lời ở trên. Trong lớp này, nó được gọi là MeasureText.

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