作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
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;
几乎连续缩放需要抗锯齿。但是 - 从您的评论来看 - 网格调整会导致字体大小四舍五入到一些阻止它的离散值。
关于.net - 如何在 .NET 中实现精细的字体缩放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11338939/
我是一名优秀的程序员,十分优秀!