2009-06-18 11 views
0

透明な背景でパターンを描画することはできません。 msdn上のドキュメントは、透明性については何も言及していない透明バックグラウンド(GDI)でpatternBrushを描画するにはどうすればよいですか?

bitmap.CreateBitmap(8, 8, 1, 1, &bits) 
brush.CreatePatternBrush(&bitmap) 
hbrush = pCgrCurrentDC->SelectObject(&brush); 
// set text color 
TextCol = pCgrCurrentDC->SetTextColor(CgrColourPalRGB); 
int oldBkgrdMode = pCgrCurrentDC->SetBkMode(TRANSPARENT); 
//draw polygon 
pCgrCurrentDC->Polygon(CgrBuffer, n); 

:これは私の抜粋です。私はこのモードを使うことができると思いますか?それともバグですか?

ありがとうございます!

答えて

1

モードTRANSPARENTは、ブラシが描画される前に背景が塗りつぶされないことを意味します。しかし、ブラシに透明なピクセルは含まれておらず、とにかに背景ピクセルを再描画します。あなたのサンプルでCreateBitmapの第4引数が1に設定されました。つまり、ビットマップはモノクロです。

ブラシで透明度を使用するには、32ビットのビットマップを使用する必要があります。 GDIは、いくつかの制限付きで透過性をサポートします。透明性を完全にサポートするには、GDI +を使用します。

関連する問題