Microsoft Office在缩放字体方面做得非常好。 它们几乎可以线性缩放0.5点(见下图)。
使用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
设置文本渲染提示:
e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
几乎连续缩放都需要使用反锯齿。 但是 – 从你的评论 – 网格拟合juding引起的字体大小四舍五入一些离散的价值,防止它。