2008-09-15 16 views
5

誰もが成功したグラフィックスを使用して アルファチャンネルを持つビットマップを描画する方法上の任意のポインタを持っています::のdrawImage()グラフィックスコンテキストは、プリンタHDCに基づいて作成 とき?プリンタドライバは一般的にアルファブレンディングをサポートしていないので、オフスクリーンのビットマップにすべてをレンダリングし、それをプリンタに送るだけの代替方法があります。特に大判プリンタへの高解像度印刷では、これは実現できません。GDI +のdrawImage()

答えて

0

はあなたがdrawImageメソッドを呼び出す前に、画像を初期化するために、白い四角形を描画しようとしたことがありますか?

0

全体のポイントは、私は、画像の背後にある線描画グラフィックスが表示する必要があることです。私は(255,255,255,0)のRGBA色で最初に矩形を塗りつぶしてみましたが、これは役に立ちません。アルファ値が0のピクセルは完全に透明に印刷されますが、部分的に透明なピクセルは完全に不透明に描画されます。

1

どのような種類のプリンタですか?通常のプリンタは白を印刷しません。メモリ内のイメージを作成し、それを '平坦化'し(アルファチャンネルを削除)、結果を印刷します。私は多分、それは私がまだ正しく印刷するためにパターン化されたダイヤモンド形状を取得直面していた問題を中心に私を得ることができるかどうかを確認するのGdiPlusを使用しようと考えていたので、この質問をするための

0

感謝。最近のアルファブレンディングはほとんどのプリンタで動作するように見えますが、ダイヤモンドに黒いコーナーを描くものがまだあります。

アルファブレンディングとは別に、ダイヤモンド形のクリップ領域を使って形状を囲んでみましたが、通常、アルファブレンディングをサポートしていないプリンタはポリゴンクリップ領域もサポートしていないようです。私はダイヤモンドを上に描画する前に、プリンタ-dcからビットマップにコピーを試みて、前にあったものを(コーナーで)戻すことができることを願っています。この問題は、プリンタドライバがページのどの部分に何が印刷されているのかを実際に知ることができないという事実が原因で発生するように見えるため、どちらも機能しません。私の場合は

、私の次の計画は、プリンターHDCに直接ダイヤモンドの塗りつぶしを描画するための大規模なビットマップブラシを使用してみることです。私は、これも特定のプリンタでは失敗する可能性があると考えています。それはあなたがしていたことのためのオプションではないかもしれないように聞こえる。