2016-10-21 5 views
0

저는 이미지 위에 텍스트를 놓고있는 재미있는 프로젝트를 작성하고 있습니다. 문제는 글자 그대로 글꼴 단위를 제외한 모든 것이 가변적인데, 현재 글꼴 계열은 Verdana입니다.텍스트가 필요한 픽셀 길이로 필요한 글꼴 크기를 계산하는 방법이 있습니까?

그래서 크기가 알려지지 않은 이미지가 나오고 알려지지 않은 단어가 나옵니다. 현재 문자열을 3 개의 분리 된 문자열로 분리하고 원본 이미지 위에 비트 맵으로 오버레이하고 글꼴 크기를 imgHeight/25로 설정했습니다. 이것은 정말로 긴 문자열을 가지고있는 경우를 제외하고는 일반적으로 작동합니다.이 경우 문자열의 끝 단어는 잘립니다.

내가 완성 할 때까지의 최단 거리는 이미지 폭의 특정 비율이되도록 정확한 글꼴 크기를 계산하는 것입니다. 그래서 솔루션 의이 종류에 대한 내 질문은 : 어떻게 주어진 문자열 주어진 폰트에있을 것입니다 길이 (픽셀)을 계산할 수 있습니까? 그로부터 원하는 픽셀 길이의 글꼴을 계산할 수 있습니다.

또 다른 옵션은 지정된 크기의 상자에 텍스트를 줄이는 것이지만 비슷한 문제가있을 수 있으며 그 방법을 파악할 수 없었습니다.

다른 접근 방식에 대한 제안은 언제나 환영합니다!

답변

1

Windows Forms TextRenderer를 사용하여 계산할 수 있습니까?

Add-Type -AssemblyName System.Drawing 
Add-Type -AssemblyName System.Windows.Forms 
$string = 'Example Text.' 
$font = New-Object System.Drawing.Font('Verdana', 12, [System.Drawing.FontStyle]'Bold, Italic') 
$size = [System.Windows.Forms.TextRenderer]::MeasureText($string, $font) 
$size.Width 
+0

흠. 대수적으로 뒤집을 수있는 좀 더 수학적으로 기대되는 글꼴 값을 찾기 위해 원하는 길이를 실제로 사용할 수 있기를 바랬습니다. 그래도 나는이 일을 어떻게 든 할 수 있을지도 모른다. – ncooper09

+0

가능한 글꼴 범위를 반복하고'width -le ​​desiredwidth'를 확인하지 않고는이를 수행 할 방법이 없습니다. – BenH

+0

예. 그건 재미 없어. 나는 지금 프로젝트의 그 부분을 포기했다. 그것은 아주 재미있는 작은 실험 이었으므로 그다지 큰 거래는 아닙니다. 당신의 도움과 생각에 감사드립니다! – ncooper09

관련 문제