0

背景が透明なパターンを描くことができません。これは私のスニペットです:

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);

msdnのドキュメントでは、透明性については何も言及されていません。このモードを使用できると思いますか?それともこれはバグですか?

ありがとう!

4

1 に答える 1

0

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

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

于 2009-06-18T20:50:25.553 に答える