关于TPrinter打印时字体的问题

lake_cx 2009-01-24 11:52:39
我想做票据套打的程序,使用图片背景,定义好填写框之后根据位置进行打印

现在发现打印时输出的文字会变大,我把背景图片直接按像素的值输出到打印机上,字体与背景图片的比例会不正确。

请教下,打印机与屏幕中的像素比例如何确定(用户输入也可以),确定好这个比例之后如何设置打印的字体大小(如何计算size)。

我打算让用户设置票据实际大小和打印偏移,进行套打,有相关经验的人给点建议吧,谢谢。
...全文
148 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wh0826 2009-02-01
  • 打赏
  • 举报
回复
up
ydlchina 2009-02-01
  • 打赏
  • 举报
回复
Printer()->Canvas->Font->Name = "Arial";
Printer()->Canvas->Font->Size = 24;
lake_cx 2009-02-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ydlchina 的回复:]
确定打印机的分辨率
打印机分辨率(也称为打印质量)由每英寸的像素点数度量(ppi)。有两种获取这个信息的方法。
1 用GetDeviceCaps()由参数LOGPIXELSX和和LOGPIXELSY来得到水平和垂直分辨率。
int iLogPixelsX=GetDeviceCaps(Printer()->Handle,LOGPIXELSX);
int iLogPixelsY=GetDeviceCaps(Printer()->Handle,LOGPIXELSY);
2 使用TPoint的PixelsPerInch属性。注意当水平和垂直分辨率相同时(一些Inkj…
[/Quote]
如果获取了分辨率,知道了像素与实际尺寸的比例,应该如何控制字体的大小呢?调整Font的Size?Size不能是小数啊?将文字当成图片输出会不好看吧,其实套打的时候并不会输出背景图,只是预览的时候有而已。
vc8fans 2009-01-31
  • 打赏
  • 举报
回复
数据套打,建议最好调用API 调用打印机内的命令来最好控制,
如果用第三方控件,用水晶报表最好..
ydlchina 2009-01-31
  • 打赏
  • 举报
回复
确定打印机的分辨率
打印机分辨率(也称为打印质量)由每英寸的像素点数度量(ppi)。有两种获取这个信息的方法。
1 用GetDeviceCaps()由参数LOGPIXELSX和和LOGPIXELSY来得到水平和垂直分辨率。
int iLogPixelsX=GetDeviceCaps(Printer()->Handle,LOGPIXELSX);
int iLogPixelsY=GetDeviceCaps(Printer()->Handle,LOGPIXELSY);
2 使用TPoint的PixelsPerInch属性。注意当水平和垂直分辨率相同时(一些Inkjet打印机有不同的垂直和水平分辨率),PixelsPerInch返回的信息才有效。这是因为PixelsPerInch与带参数LOGPIXELSY的GetDeviceCaps()一样。记住在试图获取打印机的画板属性时,打印机必须正在打印,并且BeginDoc()必须已经在Printer()对象中被调用。
int iPixelsPerInch = Printer()->Canvas->Font->PixelsperInch;
lake_cx 2009-01-27
  • 打赏
  • 举报
回复
问题是预览时字体与背景是匹配的,但是打印出来就不匹配了。
背景是用Canvas直接画上去的,而文字是TextOut的,Font的Size不论是输出到屏幕还是打印机都是用的相同的值,但是这样输出在屏幕上是匹配的,但是输出到打印机时,文字超出背景的范围了。
我来看看CB 2009-01-27
  • 打赏
  • 举报
回复
要根据屏幕像素和打印机像素的比例确定
我来看看CB 2009-01-27
  • 打赏
  • 举报
回复
要根据屏幕像素和打印机像素的比例确定
我不懂电脑 2009-01-27
  • 打赏
  • 举报
回复
文字也用图片试试
痞子酷 2009-01-25
  • 打赏
  • 举报
回复
定义票据实际大小参数
定义打印偏移参数
定义字体大小参数等基本参数
打印时,只需调整配置参数即可,并将调整好的参数保存起来,
即可满足要求。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧