作者:静静静静静静妹儿_ | 来源:互联网 | 2023-10-11 10:47
我做的报表程序,以前用VB6做过,用SendMessage取文本框的行数,乘以font高度就行了,再取出每行文本,就可以打印了,在VB.NET里,界面都做得差不多了才发现这个问题,MeasureS
我做的报表程序,以前用VB6做过,用SendMessage取文本框的行数,乘以font高度就行了,再取出每行文本,就可以打印了,
在VB.NET里,界面都做得差不多了才发现这个问题,MeasureString得出的高度总是大一点,用SendMessage也一样,我甚至做了这个试验:输入问题的同时在文本框上画出MeasureString得出的矩形,宋体9号字,从第三行就能看出明显的误差。
打印的时候就更糟糕了,把MeasureString返回的矩形给DrawString,让他写字,结果高度不一样,换行也不一样,总是在不同的地方换行,跟窗体里明显不同,誰能救我阿,我出100分,要不是有限制我200分都給都愿意,
千恩万谢!
7 个解决方案
误差是存在,但是比例是一致的.
你可以对计算结果,乘以自己设置的比值(例如:1.01)进行换算.
谢谢
但是没有别的办法了吗,这.net不是退步了吗,
而且换算也不能解决问题,文本框多行时MeasureString的高度误差不仅来自于font高度,他换行跟文本框换行也不同,这个误差更要命,我主贴里提到的那个例子,在文本框的旁边用DrawString画文本框的内容,从第一行开始就在不同的位置换行,这种误差怎么换算阿
如果解决不了我就不直接打印了,先输出HTML再打印或者直接控制Word算了,这个.net好处挺多,但这个bug要让我功亏一篑
Measurestring 的时候选择与drawstring 一样的字体。
当然是用的一样的字体
今天去单位了,原来那个程序用用API得出行数再乘以字体高度得出的数值也是不准的,以前没注意到,在这个问题上.net不是退步,是一直都这样。
真的没办法了吗?
Word里面的表格是怎么适应文字的呢?肯定有办法阿