打印机分辩率是按一英寸DPI来计算首先得到打印机的分辩率-->英寸-->厘米
解决方案 »
- 求一个算法!
- 线程结束问题
- 如何将控件放置到最前面呀 谢谢
- 请问如何播放wav文件?因为频繁播放这个声音,能不能不用每次读硬盘调到内存里?
- 我原来有300多分,现在怎么都没了!
- c/s程序版本自动升级的问题,如何判断client端版本号是否最新,然后从指定ftp服务器down
- delphi高手请指教
- 为什么访问共享目录会出现“找不到网络路径”?
- 太奇怪了, 谁做过李维的<分布式多层应用系统篇>的2-1-4使用命令动态存取远程数据,为什么我按照书上定义个GetAllTables接口,却出错Statement expected but 'INITIALIZATION' found (100 分)
- 一个有点智障的问题!
- 想问一个问题,长沙的高程什么时候报名?
- 大虾们:如何干掉网吧的“还原精灵”,我被他气疯了?
(1)用quickreport作报表时
QuickRep1.QRPrinter.PaperLength 返回的值除以100得到厘米数;
而QuickRep1.ClientHeight返回象素数;
(2)
image1.Width:=((getdevicecaps(printer.Handle,LOGPIXELSX)/2.54)*我要求的厘米数;
image1.Height:=((getdevicecaps(printer.Handle,LOGPIXELSY)/2.54))*我要求的厘米数;
然后,用下面的代码打印图片,可以得到符合要求的打印大小
with printer do
begin
begindoc;
canvas.StretchDraw(strect,image1.Picture.Graphic);
enddoc;
end;
//其中strect是一个Trect对象,而且strect.right-strect.left=image1.width,strect.bottom-strect.top=image1.height
(3)奇怪的是,第二种方法不适合的一种情况
var
p: TPoint;
begin
SetMapMode(Canvas.Handle, MM_HIMETRIC);
p := Point(CM * 1000, 0);
LPToDP(Canvas.Handle, p, 1);
Result := p.X;
SetMapMode(Canvas.Handle, MM_TEXT);
end;
是119像素/厘米所以 5cm x 3cm 图像, 便要有 119 * 5 x 119 * 3 或 595 x 357像素了.
同样道理, 一副 600dpi的图像, 便要 1190 x 714像素了.一般显示屏只需 72dpi 或 96dpi便足够了, 但以这样的解析度打印, 效果差极了.