form1.image1.Canvas.LineTo(100,100);
//////////
Printer.BeginDoc;
 Printer.Canvas.Lineto(100,100);
 Printer.EndDoc;
//////////////映射模式为默认的MM_TEXT,也就是象素。
在显示器上输出很合适,但在打印机上输出的图像很小,几乎看不到,如果我要让打印机中输出的于显示器中的一样大应该怎么做。打印机中1象素是多少毫米。
谢谢。

解决方案 »

  1.   

    用打印机的点数做度量单位
    如果想让打印程序在任何打印机上都能正常地打印,你就必须改变你的度量单位。如果采用固定的度量,不同分辨率的打印效果是不同的。举例来讲: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英寸高的矩形。打印机分辨率又称为输出分辨率,所指的是打印输出的分辨率极限,而打印机分辨率也决定了输出的质量。打印机分辨率越高,除了可以减少打印的锯齿边缘之外,在灰度的半色调表现上也会较为平滑。
    打印机的分辨率通常是以dpi(每英寸中所包含的点数)来表示。目前市场上的打印机当中,24针的针式打印机的分辨率约为180dpi;而喷墨式打印机的分辨率可达300,甚至720dpi,不过如果真要打印这么高的分辨率,所使用的也必须是特殊的纸张;所以喷墨式打印机比较适合于个人作彩色输出使用。
    除了喷墨打印机之外, 激光打印机的分辨率又要高一筹。较老的机型通常在300―360dpi之间,近来由于超微细碳粉技术的成熟,使得分辨率可以达到600甚至1200dpi,作为专业的排版输出这已经绰绰有余了。
        在专业输出上,也经常会使用到热升华彩色打印机作为输出设备,其分辨率的极限约为300点。1、获取打印机分辨率:
    dpi: Word; //全局变量dpi := GetDeviceCaps(Printer.Handle, LogPixelsX);
    //由于大多数情况下水平和垂直分辨率相同,故此处省略获取垂直分辨率的部分2、输出位置:
    OutX,OutY: Word; //全局变量, 以0.1毫米为单位
    Printer.Canvas.TextOut(MMToDot(OutX), MMToDot(OutY), '输出文本');function MMToDot(Value: Integer): Integer;
    var Tmp: Real;
    begin
      Tmp := Value / 254 * dpi;
      Result := Round(Tmp);
    end;关于打印的很多,你自己再找找吧