打印时按需要自动缩放文本尺寸且强制换行

原创 2007年09月24日 23:22:00
Dim mark As Single   
Dim g As Graphics = e.Graphics    
Dim str As String   
Dim i As Integer   
Dim temp() As String   
Dim myfix As Drawing2D.Matrix = New Drawing2D.Matrix    
Dim size As SizeF    
Dim length As Single   
   
str = ttbBuildName.Text.TrimStart(""'所有文本    
size = g.MeasureString(str, myfont3)     
length 
= size.Width '所有文本在myfont3状态下的长度(像素)    
If length > 4082 Then '4082:供打印的文本框的长度(像素)    
    mark = 4082 / length    
Else   
    mark 
= 1    
End If   
myfix.Scale(mark, 
1'按比例压缩宽度    
g.Transform = myfix    
   
Dim j As Integer = 0    
Dim from As Integer = 0    
Dim strtemp As String = " "   
   
'第一行    
   
Do While (g.MeasureString(strtemp, myfont3).Width < 302 * (1 / mark) And 302 * (1 / mark) - g.MeasureString(strtemp, myfont3).Width >= g.MeasureString(str.Substring(from + j, 1), myfont3).Width)    
    j 
= j + 1    
    strtemp 
= str.Substring(from, j)    
    
If (j + from) = str.Length Then Exit Do   
Loop   
from 
= from + j    
g.DrawString(strtemp, myfont3, Brushes.Black, 
New RectangleF((x1 + 679* (1 / mark), y1 + 80, length, 30), formatl)    
= 0    
   
'后9行    
   
If (j + from) <= str.Length - 1 Then   
    
For i = 1 To 9    
        strtemp 
= " "   
        
Do While (g.MeasureString(strtemp, myfont3).Width < 420 * (1 / mark) And 420 * (1 / mark) - g.MeasureString(strtemp, myfont3).Width >= g.MeasureString(str.Substring(from + j, 1), myfont3).Width)    
            j 
= j + 1    
            strtemp 
= str.Substring(from, j)    
            
If (j + from) = str.Length Then Exit Do   
        
Loop   
        from 
= from + j    
        g.DrawString(strtemp, myfont3, Brushes.Black, 
New RectangleF((x1 + 561* (1 / mark), y1 + 130 + 51 * (i - 1), length, 30), formatl)    
        j 
= 0    
        
If (j + from) = str.Length Then Exit For   
    
Next   
End If   
   
myfix.Scale(
1 / mark, 1'恢复原始比例(1:1)    
g.Transform = myfix    

相关文章推荐

Android 不同尺寸屏幕适配采用自动缩放完美解决

转自:http://blog.csdn.net/ljh102/article/details/45536293 做过安卓开发的都知道,屏幕适配是一件非常困难的事情。 Google官方的解决方案:s...

C#winform设置窗体自动缩放适应不同尺寸的电脑屏幕大小

由于要用winform开发一个桌面安装版考试软件,用户量也比较多, 所以很多用户反映软件的界面经常超出屏幕,部分功能或内容无法显示完整。 软件界面有几个设置大小固定为宽1066, 高718。 我...
  • ztzi321
  • ztzi321
  • 2014年08月03日 21:26
  • 3532

SVG 文本自动缩放

  • 2015年05月22日 19:55
  • 761B
  • 下载

百度地图多个兴趣点(经纬度、坐标点)需要同时显示在地图上,如何设置自动缩放等级

如果有多个兴趣点(经纬度、坐标点)需要同时显示在地图上,如何设置缩放比例。如果缩放太细,那么一个屏幕放不下,如果缩放太粗,显示就太密集。需要在程序中根据点的分布来设置。 百度地图Android SD...

QML自动缩放 Demo

  • 2015年05月18日 23:08
  • 3KB
  • 下载

WPF控件内容自动缩放及放大镜

一、功能、布局描述 1、使用Grid的GridSplitter实现可拖拽分隔栏效果。当ShowsPreview设置为True时,拖拽过程中不会刷新(控件内容要等到鼠标释放时才变化);当ShowsPr...

MFC窗口自动缩放源码例子

  • 2017年04月13日 18:50
  • 3.89MB
  • 下载

开源,安卓自动缩放布局,解决屏幕适配问题

做过安卓开发的都知道,屏幕适配是一件非常困难的事情。 Google官方的解决方案:screens_support 需要写多个layout文件以及dimens.xml,工作量大不说,维护也麻烦。 其实...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:打印时按需要自动缩放文本尺寸且强制换行
举报原因:
原因补充:

(最多只允许输入30个字)