2012-04-12 6 views
6

アルファチャンネルをHDCで手伝ってください。私はHDC dc CreateCompatibleDCをスローします。 CreateDIBSectionを呼び出すよりも、メモリ内のイメージのバイトを見つけることができます。このDCにDrawFrameControlを呼び出します。すべての作品ですが、メモリには1ピクセルあたり4バイトがあり、アルファチャンネルは00で塗りつぶします。しかし、私はアルファチャンネルが必要です。 DrawFrameControlに実際のアルファ値を設定させるにはどうしたらいいですか?ありがとうございました。そして、悪い英語のために申し訳ありません:(DeviceContext(HDC)のアルファチャンネル

答えて

7

GDIは、1ピクセルあたり4バイトのビットマップのアルファ/予約バイトに書き込むことはできません。GDIは実際にアルファを認識​​しません。 AlphaBlendなどの関数の。しかし、あなたはそれがに書いたピクセルを知って0 にアルファに書き込み、リセットという知識を使用して、手動でその後アルファを修正することができます。

の詳細については、これら三つを読みます記事:

最初の二つは、おそらくあなたが望むものを達成するために十分な情報を与えます。

これらの記事は、アルファが詰まったピクセルをスキャンして修正する(さらに高度なテクニックを使用して、いくつかのものを重ねて正しいアルファベットで表示する)ことで、GDI関数でアルファを処理する一般的な方法を取ります。 )FrameRectは、線が1単位の幅が広くて高い矩形を描画します。線を使用して描画するか、メモリ内のピクセルビットマップを直接編集して直線をメモリに描画する方が効率的です。これは、GDI描画ピクセルのビットマップ全体をスキャンする必要がなくなります。結局、1単位幅の矩形であるため、どのピクセルが既に描画されているのかを正確に把握し、自分で編集することができます。

関連する問題