如何绘制具有透明背景(GDI)的图案画笔?

时间:2009-06-18 15:11:38

标签: c++ mfc 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 个答案:

答案 0 :(得分:1)

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

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