我要绘制一个很大的图形,大概有30几张A4纸幅面拼合的大小,我采用下面的方法来打印:
1、使用图元(TMetaFile),设置图元的尺寸为打印纸的宽度的高度除以打印系数
(打印机分辨率与屏幕分辨率比例)。
2、设置两个变量MVX,MVY,用于在绘制时偏移图形的起始位置来实现分页打印,即当打印
第一张时,(MVX,MVY)为(0,0),然后绘制整张图,这样超出图纸部份的图形便不会显示出
来,打印第二张时(MVX,MVY)为纸张的宽度和高度(负值),其它的以此类推。
3、绘制完一张图纸后,使用Printer.Canvas.StretchDraw(Rect(0,0,Printer.PageWidth,
Printer.PageHeight), PrintWmf)(其中PrintWmf为图元),使之发送到打印机。
现在的情况是,在Window2000下打印正常,在Window98下打印时会出现异常,因为我要画一
个整个图形大小的表格,这时整张表格会被黑色充填,图形会重叠(会把后面一第的重到
当前页中)。
请问,要如何处理这种情况。

解决方案 »

  1.   

    我要绘制一个很大的图形,大概有30几张A4纸幅面拼合的大小,我采用下面的方法来打印:
    1、使用图元(TMetaFile),设置图元的尺寸为打印纸的宽度的高度除以打印系数
    (打印机分辨率与屏幕分辨率比例)。
    2、设置两个变量MVX,MVY,用于在绘制时偏移图形的起始位置来实现分页打印,即当打印
    第一张时,(MVX,MVY)为(0,0),然后绘制整张图,这样超出图纸部份的图形便不会显示出
    来,打印第二张时(MVX,MVY)为纸张的宽度和高度(负值),其它的以此类推。
    3、绘制完一张图纸后,使用Printer.Canvas.StretchDraw(Rect(0,0,Printer.PageWidth,
    Printer.PageHeight), PrintWmf)(其中PrintWmf为图元),使之发送到打印机。
    现在的情况是,在Window2000下打印正常,在Window98下打印时会出现异常,因为我要画一
    个整个图形大小的表格,这时整张表格会被黑色充填,图形会重叠(会把后面一第的重到
    当前页中)。
    请问,要如何处理这种情况。
      

  2.   

    2000和98的GDI系统的座标系统有所不同,可以用SetWindowOrg()来代替SetViewportOrg()