打印机分辨率不同,在Pringter.Canvas中同样的大小的画打印出来就会不一样大,获取打印机的分辨率,通过WinAPI GetDeviceCaps(Printer.Canvas.Hanle,LOGPIXELSX),(先Printer.BeginDC)具体的看Delphi的帮助

解决方案 »

  1.   

    希望大家帮我一下,有没有其它的解决方法,
    我在用HP6L的时候就是用的那个GetDeviceCaps呀,
    可是换了打印机为什么还是不可以呢?
    如果大侠帮忙小弟一定感激不尽,300一定送上
      

  2.   

    你可以这样处理。
    像素的位置 PrintPhotoSizeX,PrintPhotoSizeY
    OneInchSizeWidth,OneInchSizeHeight 实际需要的尺寸,单位毫米HDC hDc=Printer()->Handle;
    int picPerMMX=GetDeviceCaps(hDc,HORZRES)/GetDeviceCaps(hDc,HORZSIZE);
    int picPerMMY=GetDeviceCaps(hDc,VERTRES)/GetDeviceCaps(hDc,VERTSIZE);  
    PrintPhotoSizeX=OneInchSizeWidth * picPerMMX;
    PrintPhotoSizeY=OneInchSizeHeight* picPerMMY;Printer()->Handle:打印机句柄,可控制打印机