GDI+Visual Studio .NET 2002.NET 1.0Visual Studio .NET 2003.NET 1.1中级开发Visual StudioWindows.NETVisual Basic
测量字符串






3.55/5 (20投票s)
2004年9月29日
2分钟阅读

171019

653
一个使用 Graphics.MeasureString() 方法的示例。
引言
假设你有一个数据库表,其中包含公司列表。有人要求你使用指定的字体和字号,将每个公司名称打印在不同的标签上。你必须确保所有公司名称都能适应标签,而不会出现换行;如果公司名称不合适,你可以引入缩写。
你使用的字体不是固定长度的字体,而是比例字体,因此无法使用每个字符串的字符长度来预测字符串的实际打印长度。你该怎么办?
你只需要“测量”每个字符串,计算它在指定字体和字号下打印时的宽度。为此,你可以使用 .NET Framework Graphics 类的 MeasureString()
方法。
应用程序
我编写的简单应用程序可以帮助你“测量”字符串,给定字体和字号。核心测量功能在 Measure()
子例程中
Private Sub Measure(ByVal BannerText As String, _
ByVal FontName As String, ByVal FontSize As Single, _
ByRef Width As Single, ByRef Height As Single)
Dim b As Bitmap
Dim g As Graphics
Dim f As New Font(FontName, FontSize)
' Compute the string dimensions in the given font
b = New Bitmap(1, 1, PixelFormat.Format32bppArgb)
g = Graphics.FromImage(b)
Dim stringSize As SizeF = g.MeasureString(BannerText, f)
Width = stringSize.Width
Height = stringSize.Height
g.Dispose()
b.Dispose()
End Sub
如何使用该应用程序
- 应用程序运行后,单击“设置字体”按钮,选择你喜欢的字体;
- 在上面的文本框中输入标签大小允许的最长字符串之一(当然,你需要进行试打印);
- 在“当前宽度”框中,你将读取输入字符串的宽度(以像素为单位)(针对给定的字体和字号计算):这是标签允许的最大宽度,因此你可以单击“设置限制”按钮来标记它;
- 从现在开始,你输入到文本框中的所有新字符串都将被测量,并且它们的宽度将与你设置的限制进行比较,为你提供字符串“太长”的证据,并允许你修改它们(引入缩写),直到它们的宽度适合允许的最大宽度。
当然,这个应用程序只是一个示例。在实际情况下,你需要在程序中集成一个类似于 Measure()
的子例程,该程序将:从数据库表中获取你的数据;测量字符串;警告你有关“太长”的字符串并让你修改它们,然后将它们再次存储到数据源中。