65.9K
CodeProject 正在变化。 阅读更多。
Home

测量字符串

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.55/5 (20投票s)

2004年9月29日

2分钟阅读

viewsIcon

171019

downloadIcon

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

如何使用该应用程序

  • 应用程序运行后,单击“设置字体”按钮,选择你喜欢的字体;
  • 在上面的文本框中输入标签大小允许的最长字符串之一(当然,你需要进行试打印);
  • 在“当前宽度”框中,你将读取输入字符串的宽度(以像素为单位)(针对给定的字体和字号计算):这是标签允许的最大宽度,因此你可以单击“设置限制”按钮来标记它;
  • 从现在开始,你输入到文本框中的所有新字符串都将被测量,并且它们的宽度将与你设置的限制进行比较,为你提供字符串“太长”的证据,并允许你修改它们(引入缩写),直到它们的宽度适合允许的最大宽度。

Strings Meter user interface

当然,这个应用程序只是一个示例。在实际情况下,你需要在程序中集成一个类似于 Measure() 的子例程,该程序将:从数据库表中获取你的数据;测量字符串;警告你有关“太长”的字符串并让你修改它们,然后将它们再次存储到数据源中。

© . All rights reserved.