グラフィックの印刷が出来ないのは?

解決


Taku  2002-09-02 20:51:58  No: 1415

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の違いなのでしょうが、理由がわかりません
どなたか、ご教授お願いします


にしの  2002-09-02 21:58:48  No: 1416

プリンタは同じものを使用していますか?
TPrinter.Canvasのヘルプに、
グラフィック機能のないプリンタもあります。そのようなプリンタでは Draw,StretchDraw,および CopyRect メソッドは無効です。
とあるように、できない場合があります。


Taku  2002-09-02 23:09:18  No: 1417

にしのさま
レス有難うございます
ネットワーク経由で同じプリンターに出力しています
実行ファイルは2000側でコンパイルして98側にコピーして実行しています


にしの  2002-09-02 23:50:13  No: 1418

プリンタが同じであれば、たぶんドライバが原因ですね。
どちらにせよ、
GetDeviceCaps(Printer.Handle, RASTERCAPS) and RC_BITBLT)=0
であれば、BitBlt系の印刷はできません。
StretchDrawで印刷できたのは、(GetDeviceCaps(Printer.Handle, RASTERCAPS) and RC_STRETCHBLT)<>0)だったんだと思います。


Taku  2002-09-03 05:41:54  No: 1419

やはりドライバーですね。
アドバイス頂いたGetDeviceCapsを調べていたら
DrawがダメならStretchDIBitsと言うのを見つけました
サポートしていないドライバーもあるとの事ですが
何とか、印刷出来るようになり解決しました。
いつも、お答えいただき感謝しています。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加