canvas与点的问题(一张A4纸到image的canvas应该对应是多少点)(200分)

  • 主题发起人 主题发起人 whitelion
  • 开始时间 开始时间
W

whitelion

Unregistered / Unconfirmed
GUEST, unregistred user!
canvas与点的问题(一张A4纸到image的canvas应该对应是多少点)
以厘米算,一厘米相应于canvas上的多少点啊
 
你可以到PHOTOSHOP中去换算
 
问题是不知道canvas的dpi啊
 
canvas的单位应该是像素吧,
看看像素和厘米之间的转换关系....
 
应该是多少呢
 
用打印机的点数做度量单位
如果想让打印程序在任何打印机上都能正常地打印,
你就必须改变你的度量单位。如果采用固定的度量,
不同分辨率的打印效果是不同的。
举例来讲:printer?Canvas?rectangle(0,0,360,720)
在360×360的佳能4200SP上能打出一个1英寸宽、2英寸高的矩形,
但在600×600的惠普6L上只能打出0?6英寸宽、1?2英寸高的矩形。
使用打印机的点数做为度量单位是一个明智的选择。
具体做法如下:VarPointX,PointY:integer;PointX:=GetDeviceCaps(printer?Handle,LOGPIXELSX);
PointY:=GetDeviceCaps(printer?Handle,LOGPIXELSX);
printer?Canvas?rectangle(0,0,PointX*1,PointY*2)
这样,无论你使用什么样的打印机,都能得到一个1英寸宽、2英寸高的矩形。
 
跟打印机的分辨率有关,在程序中先返回当前打印机分辩率,然后再计算
 
好象:
1英寸约等于25.4毫米。然后结合楼上的。估计就可以到处换算了吧。呵呵
 
这样问
如果我的打印机分辨率为1200
要在打印机上打印一个10cm的直线
在iamge上应该画多少点的距离

 
换一个思路:
改变CANVAS的映射模式为
SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC);//
//Each logical unit is mapped to 0.1 millimeter. Positive x is to the right; positive y is up.
也就是说,MOVETO(0,0), LineTo(10,0)画出来的线是10*0.1mm,而不用管打印机的分辨率。
 
Printer.PageWidth得到的就是点数
Canvas.Width得到的也是点数
两个相除就是一个比例。不用管打印机的分辨率
因为你最终在打印机上面画也是以点数来的
 
多人接受答案了。
 
后退
顶部