vb.net打印发货单的字体问题

首先说明一下,打印方式是使用 Microsoft.VisualBasic.PowerPacks.Printing.PritForm.Vs.dll组件方式,设置好打印尺寸(纸张大小、上下左右边距)后,直接使用Printer打印。使用的是针式打印机。因为在打印之前有手动修改打印内容的需要,

所以采用文本框的显示填充内容的方式,然后截图打印。

发现问题是,通过代码设置文本框字体类型为宋体,打印出来的字体样式与vs自带的宋体样式不同,结果打印效果不好。

分析原因如下,原本以为是打印机制(截图方式)问题,设置的字符集不同导致,经过对比发现是设置字体的代码问题。

 

 查看帮助文件,发现修改字体的方式有很多,如果简单的使用Font(String,Single)方法虽然也可以设置“宋体”和大小,但是会发现与vs自身通过控件属性设置出来的有不少差别。

经过多次尝试,每种设置字体的方式都做了对比发现,如果要通过代码把文本框设置的字体样式与通过文本框的控件属性修改出来的效果相同,需要对各个参数进行设置才可以,默认值虽然省事,但是会出现意想不到的效果。

可能会有一个疑问,就是不知道各个参数应该设置成多少,Font(String,Single,FontStyle,GraphicsUnit,Byte,Boolean)

第一方法是,随便在窗体上添加一个文本框,修改Text属性填写内容,然后修改字体为自己想要的样式,最后通过属性窗口查看各个参数值

 

 第二个方法是,使用代码访问各个所需要的属性值,

MessageBox.Show( " 字体:" &TextBox1.Font.Name & "   类型:" & TextBox1.Font.Style & "   度量单位:" & TextBox1.Font.Unit & "   字符集:" & TextBox1.Font.GdiCharSet & "   gdiVertil:" & TextBox1.Font.GdiVerticalFont) '宋体  0 3 134 false

记下各个参数的数值即可

第三种方法是最省事的了,直接使用代码 读取控件属性创建新字体 New System.Drawing.Font("宋体", 9.0F,TextBox1.Font.Style, TextBox1.Font.Unit, TextBox1.Font.GdiCharSet, TextBox1.Font.GdiVerticalFont)  注意,9.0F是字体大小,F表示这个数是单精度浮点数,可自由定义这个数值

总结,Textbox2.Font=New System.Drawing.Font("宋体", 9.0F,TextBox1.Font.Style, TextBox1.Font.Unit, TextBox1.Font.GdiCharSet, TextBox1.Font.GdiVerticalFont) 

posted @ 2020-10-31 16:17  水星博客  阅读(307)  评论(0)    收藏  举报