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意味着在绘制画笔之前不会填充背景。但是您的画笔中不包含任何透明像素,并且无论如何它都会重绘背景像素。CreateBitmap在您的示例中,第四个参数 in设置为 1。这意味着位图是单色的。

您需要使用 32 位位图在画笔中使用透明度。GDI 支持透明度,但有一些限制。使用 GDI+ 获得完全透明的支持。

于 2009-06-18T20:50:25.553 回答