打印中按指定宽度截取字符串

在设计表格打印程序时,遇到需要根据列宽来限制此列的文字输出宽度的问题,参考经过一番试验成功解决,虽然觉得可能在算法上效率可能不高,但是总算解决了,特公布出来给需要的朋友参考。

特别说明,之前提供的代码比较麻烦,今天看了一篇文章( http://www.codeguru.com/forum/archive/index.php/t-190585.html )受益匪浅,特重新提供给需要的朋友。

 

重要函数:   ev.Graphics.MeasureString(),是用来计算字符串图形下的尺寸的;详细使用方法请请参考微软msdn

 
     Private   Function CutStr(ByVal ev As System.Drawing.Printing.PrintPageEventArgs, ByVal StringToPrint As StringByVal Width As SingleByVal PrintFont As Font) As String

        
Dim numChars As Integer                      '可容纳的字符数
        Dim numLines As Integer                      ‘可容纳得行数
        
Dim stringForPage As String                  ’用于打印的字符串
        
Dim strFormat As New StringFormat()    ‘字符串格式
        
Dim LayoutArea As New SizeF             ’限定打印的区域大小
        LayoutArea.Width 
= Width
        LayoutArea.Height 
= PrintFont.Height   ‘这里.Height指包括行间距的文字打印高度,size则不包括行间距
        strFormat.Trimming 
= StringTrimming.Word   ’设置为分词
  
        
'计算打印区域可以容纳的字符数和行数
     ev.Graphics.MeasureString(StringToPrint, PrintFont, LayoutArea, strFormat, numChars, numLines)
        
'Compute string that will fit on a page
        '计算容纳的字符串
        stringForPage = StringToPrint.Substring(0, numChars)
        
Return stringForPage
    
End Function


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值