.NET打印 - 如何确定文本是否适合指定的矩形

时间:2011-10-20 21:09:52

标签: .net

我需要能够确定用户输入的文本是否适合具有预定义报告布局的打印页面部分的范围,例如。 A部分:为2x3英寸的矩形留出空间以包含文本,但可以包含来自战争与和平的所有文本。如果文本不适合给定的矩形,我需要打印另一页并继续打印溢出先前打印页面部分的任何文本。

该应用程序是用VB 2010 Express编写的,但欢迎使用C#中的示例。

TIA

2 个答案:

答案 0 :(得分:2)

尝试查看Graphics类的MeasureString和MeasureCharacterRanges函数。

答案 1 :(得分:0)

这是一种方法,我希望其他人会发现确定文本数量有用 这将适合给予区域:

Public Function GetTextThatFitsLength( _
        ByVal e As PrintPageEventArgs, _
        Text As String, _
        ByVal Width As Integer, _
        ByVal Height As Integer, _
        ByVal Font As Font, _
        Optional ByRef LinesFilled As Integer = 0) As Integer
        ' returns the number of charaters that fit into the specified area 
        ' optionally returns the number of lines that fit into the area
        Dim LayoutArea As New SizeF
        With LayoutArea
            .Width = Width
            .Height = Height
        End With
        Dim StringFormat As New StringFormat(StringFormat.GenericDefault)
        With StringFormat
            .Alignment = StringAlignment.Near
            .Trimming = StringTrimming.Word
        End With
        Dim CharactersFitted As Integer
        e.Graphics.MeasureString(Text, Font, LayoutArea, StringFormat, CharactersFitted, LinesFilled)
        Return CharactersFitted
    End Function