究竟是我是面瓜,还是BCB是面瓜?
我用BCB5开发一个图像打印功能,使用TPRINTER类,一幅800X600象素的位图在A4纸张上打印却只有豆腐干大小,使用的是如下代码:
TPrinter *SysPrinter = new TPrinter ;
……
SysPrinter->BeginDoc();
SysPrinter->Canvas->Draw(iLeft, iTop, PrintBmp);
SysPrinter->EndDoc();
后改用
……
SysPrinter->Canvas->StretchDraw(rBmp, PrintBmp);
……
结果虽然图像的大小问题解决,但图形质量惨不忍睹。
我后来准备依据打印纸张大小先建立一个TBitmap,在将原位图Stretch到新位图,最后再打印,但对TBITMAP宽、高附值达到几千时就出错,可能是系统不让生成太大的位图。目前我打算将原位图先切成几块,再分别Stretch,分别在相应位置打印。但总觉得应该有更好的算法。心有不甘,特向众位高人求教。