2013-10-28 4 views
2

지정된 사각형에 문자열을 그리려는데 문제가 있습니다. 지정된 글꼴이있는 문자열이 사각형 경계 바깥에있을 수 있습니다.지정된 사각형에 맞도록 글꼴 크기를 조절하는 방법

그래서 지정된 사각형 영역에 맞게 문자열의 크기를 조절하는 방법을 원합니다.

public Font scaleFont(String text, RectangleF rect, Graphics graphics, Font pFont) 
     { 
      float fontSize = 20.0f; 
      Font font = pFont; 
      float width = graphics.MeasureString(text, pFont).Width; 
      float height = graphics.MeasureString(text, pFont).Height; 
      fontSize = ((rect.Width/width) * pFont.Size); 
      float heig = (rect.Height/height); 
      return new Font(pFont.FontFamily, fontSize); 
     } 

위의 코드

는 사각형의 상단 영역에서 문자열을 맞게 나에게 스케일 글꼴을 제공하지만 (위 너 한테의 풋을 부착) 전체 영역에 맞게 원하는

Output of algo

그러나 다음 출력을 원합니다. 전체 지역에 피팅으로

enter image description here

+0

즉, 단어를 상자로 감싸려고합니다. 내가 너를 이해 했니? –

+0

@ AndreyAtapin, 질문을 업데이트했습니다. – user2528012

+0

'Font font = pFont'하고 왜 사용하지 않으십니까? –

답변

1

당신은 그 의미?

enter image description here

그렇다면

는 일반적인 방법은 당신이 원하는 어떤 객체에 비트 맵 및 피팅 하나에 텍스트를 끌고있다.

픽셀 화를 피하기 위해 코드 조각을 사용하여 최상의 글꼴 크기와 최상의 비트 맵 크기를 감지 할 수 있습니다.

+0

나는 당신이 여기에 목표에 있다고 생각한다. 나는 이런 종류의 일을해야만했던 프로젝트에서 일하고 있습니다. 그리고 그것은 제가 생각한 가장 좋은 아이디어였습니다. 이 기사를 가이드 라인으로 사용했는데 잘 돌아갔습니다. Michael Kuehl에게 감사드립니다. 여기 링크 [csharp-font-scaling] (http://tech.pro/tutorial/691/csharp-tutorial-font-scaling)가 있습니다. –

관련 문제