打印机画线问题(100分)

  • 主题发起人 主题发起人 Cycas
  • 开始时间 开始时间
C

Cycas

Unregistered / Unconfirmed
GUEST, unregistred user!
在打印机上怎么输出一条固定宽度的直线,如:1 毫米。
因为 1 毫米的直线在不同 dpi 的打印机以象素表示的
宽度都是不一样的,难道还得根据不同的打印机设置
Printer.Canvas.Pen.Width 吗?

而且有些打印机的水平和垂直分辨率是不一样的,
如 300dpi x 600dpi,那么以一定的 Printer.Canvas.Pen.Width
画出来水平和垂直直线实际宽度是否一样(我没有这样的打印机,
所以没法试),如果不一样,怎么解决这个问题?

最好给出例子。
 
在WIN32编程中使用设置"映象"来控制实际打印尺寸.
比如:(VC例程,其->后的方法也有相应的API函数,若有遗文再问)
pDC->SetMapMode(MM_LOMETRIC);//将打印分辨率定为每象素对应0.1mm
pDC->SetMapMode(MM_ANISOTROPIC);//定义坐标系的方向
size=pDC->GetViewportExt();
pDC->SetViewportExt(size.cx,-size.cy);
//以下在delphi中可使用Printer.Canvas 的方法了
pDC->MoveTo(140,140);
pDC->LineTo(240,140);//打印一个10mm的直线
pDC->SetMapMode(MM_TEXT);
不管你的打印机是什么状态都会是10mm,分毫不差.
 
OK 搞定,多谢 Crane。
 
接受答案了.
 
后退
顶部