DOBON.NET DOBON.NETプログラミング掲示板過去ログ

点をたくさん印刷する場合の高速化について

環境/言語:[XP]
分類:[.NET]

いつもお世話になっています。

現在QRコードなどを印刷するソフトを考えているのですが、QRコードのドットパターンをひとつづつFillRectangleで直接プリンタに書くと、大きなものになるとジョブの容量が大きくなってしまいかなり遅くなってしまいます。

ビットマップなどの画像イメージを作成して印刷すると、速くはなったのですが、小さいものになると点がつぶれてしまったりしたので、今は画像を作らずに直接プリンタに命令を送っているのですが、速く正確に点をたくさん描画する方法があれば教えてください。

よろしくお願いします。
> ビットマップなどの画像イメージを作成して印刷すると、速くはなったのですが、小さいものになると点がつぶれてしまったりしたので、

最小のイメージを作成し(1つの四角が1ピクセルのイメージ),そのイメージを拡大するようにすればよいのではないでしょうか。
処理が拡大だけになるのでつぶれることはなくなると思います。
返信ありがとうございます。

> 最小のイメージを作成し(1つの四角が1ピクセルのイメージ),そのイメージを拡大するようにすればよいのではないでしょうか。
> 処理が拡大だけになるのでつぶれることはなくなると思います。

その案はちょっと無理だと思います。
例えば400dpiのプリンタでひとつの四角を2ドットとかで印字したい場合に、
それより小さい四角をビットマップで作りたくてもおそらく画面の解像度の
96dpiでの四角が最小になるので、プリンタで印字するものより小さい画像は作れないと思います。

>例えば400dpiのプリンタでひとつの四角を2ドットとかで印字したい場合に、

400dpiで2ドットは例えばの話ですか? 本当にその解像度なら顕微鏡が必要なQRコードになりそうですが?

>ビットマップなどの画像イメージを作成して印刷すると、速くはなったのですが
>小さいものになると点がつぶれてしまったりしたので

とありましたので,ビットマップの縮小処理で誤差がでたり,スムージングの影響がでたりしたのかなと思ったので,小さなビットマップを作成して拡大して使うようにすれば点がつぶれることはないのかなと思いました。dpiは関係なく1点が1ドットの画像をつくってプリンタに描画するときにGraphics.DrawImageで拡大すれば好きな大きさのQRコードが得られるのではないかと思うのですが...

DOBON.NET | プログラミング道 | プログラミング掲示板