PaintBoxの内容を印刷するため
printer.Canvas.CopyRect(rect(0,0,W,H),paintbox1.Canvas,rect(0,0,paintbox1.Width,paintbox1.Height));
として実行しています。
Win2000では印刷できますがWin98では、印刷されません。
試しにTBitMapに写して、DrawとStretchDrawを行うと
StretchDrawでは印刷できました。
OSの違いなのでしょうが、理由がわかりません
どなたか、ご教授お願いします
プリンタは同じものを使用していますか?
TPrinter.Canvasのヘルプに、
グラフィック機能のないプリンタもあります。そのようなプリンタでは Draw,StretchDraw,および CopyRect メソッドは無効です。
とあるように、できない場合があります。
にしのさま
レス有難うございます
ネットワーク経由で同じプリンターに出力しています
実行ファイルは2000側でコンパイルして98側にコピーして実行しています
プリンタが同じであれば、たぶんドライバが原因ですね。
どちらにせよ、
GetDeviceCaps(Printer.Handle, RASTERCAPS) and RC_BITBLT)=0
であれば、BitBlt系の印刷はできません。
StretchDrawで印刷できたのは、(GetDeviceCaps(Printer.Handle, RASTERCAPS) and RC_STRETCHBLT)<>0)だったんだと思います。
やはりドライバーですね。
アドバイス頂いたGetDeviceCapsを調べていたら
DrawがダメならStretchDIBitsと言うのを見つけました
サポートしていないドライバーもあるとの事ですが
何とか、印刷出来るようになり解決しました。
いつも、お答えいただき感謝しています。
ツイート | ![]() |