2012-07-05 3 views
2

Microsoft Office는 글꼴 크기를 조정할 때 매우 유용합니다. 그것들은 거의 선형 적으로 0.5 포인트 단위로 조정될 수 있습니다 (아래 이미지 참조)..NET에서 고급 글꼴 크기 조정을 수행하는 방법은 무엇입니까?

Graphics.DrawString을 사용하여 이것을 재현하지 못했지만 글꼴 크기를 조정할 때 별개의 단계가 나타납니다.

아래 코드를 사용하면 Office에서 할 수있는만큼의 크기로 텍스트를 그릴 수 없다는 것을 알 수 있습니다. 그 중간 글꼴 크기를 그릴 수있는 방법은 무엇입니까?

Dim baseSize As Single = 16.0F 
    Dim inputText As String = "MMMMMMMMMMMMMM" 

    Dim stringFormat As Drawing.StringFormat = Drawing.StringFormat.GenericTypographic() 

    Dim pos As Single 
    Dim i As Integer 

    Do 
     Using font As Drawing.Font = New Drawing.Font("Calibri", (baseSize + i/10.0F), FontStyle.Regular, GraphicsUnit.Pixel) 
      Dim text As String = inputText & " " & font.Size.ToString() & "px" 
      Dim textSize As SizeF = e.Graphics.MeasureString(text, font, New PointF(0, 0), stringFormat) 
      e.Graphics.DrawString(text, font, Brushes.Black, New Drawing.RectangleF(10, pos, textSize.Width, textSize.Height), stringFormat) 
      pos += font.Height 
     End Using 
     i += 1 
    Loop While pos < ClientRectangle.Height 
+0

[Graphics.TextRenderingHint]의 다른 옵션을 사용해보십시오 (http://msdn.microsoft.com/en-us/library/system.drawing.graphics.textrenderinghint). 앤티 앨리어스 또는 ClearType 옵션이 도움이됩니다. – Codo

+0

실제로 AntiAliasGridFit, ClearTypeGridFit 및 SingleBitPerPixel 옵션을 시도했지만 이전에는 AntiAlias를 놓쳤습니다. AntiAlias를 사용하면 트릭을 수행합니다. 감사합니다! –

+0

추신 : 답변을 게시하고 싶다면 기꺼이 받아주세요. –

답변

1

Font size comparison

텍스트 렌더링 힌트 설정 :

e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias; 

안티 별명은 거의 연속 스케일링이 필요합니다. 그러나 의견에서 유래하는 것은 grid-fitting으로 인해 font-size가 반올림되는 것을 방지하는 분리 된 값으로 반올림됩니다.

관련 문제