2009-06-18 47 views
0

我无法绘制具有透明背景的图案。这是我的代码片段:如何绘制带有透明背景(GDI)的图案花纹?

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的文档没有提及任何透明度。我猜这种模式可以使用?或者这是一个错误?

谢谢!

回答

1

模式TRANSPARENT表示在绘制画笔之前背景不会被填充。但是,您的画笔不包含任何透明像素,并且无论如何都会重绘背景像素。 CreateBitmap中的第四个参数在您的示例中设置为1。这意味着位图是单色的。

您需要使用32位位图来在画笔中使用透明度。 GDI支持一些限制的透明度。使用GDI +提供完整的透明度支持。