2012-12-12 2 views
6

전체 부모 컨테이너에 맞도록 레이블 크기로 텍스트를 만들 수있는 방법을 찾고 있습니다. 내가 생각할 수있는 한 가지 방법은 창 크기에 따라 컨테이너 크기를 가져온 다음 이에 따라 글꼴 크기를 늘리거나 줄이는 것이지만 그 방법은 가능성을 제한합니다.WinForms 응용 프로그램에서 레이블 텍스트를 확장 가능하게 만들 수있는 방법

이 작업을 수행하는 더 좋은 방법이 있다면 Winforms 응용 프로그램의 앵커 속성처럼 작동 할 수 있습니다.

답변

4

대답은 그래픽 객체와 페인트 이벤트의 어딘가에 숨겨져 있다는 것을 알았습니다.이 두 키워드로 해결하면 내 문제가 해결되었습니다. 여기 내 특별한 경우에 효과가있는 해결책이 있습니다. 다음과 같이

나는 단지 내 레이블 페인트 이벤트에 글꼴 크기를 변경하고 있습니다 :

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; 
} 

가 나는 또한 을이 문서가 도움이되었다고 다음 NewFontSize 기능은 다음과 같습니다로

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; 
} 

http://www.switchonthecode.com/tutorials/csharp-tutorial-font-scaling

+0

매우 잘 작동합니다! 감사. – nozzleman

+1

parentContainer 란 무엇입니까 ??? 전체 코드로 URL을 보낼 수 있습니까? 감사! – Xarialon