我无法绘制具有透明背景的图案。这是我的片段:

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

谢谢!

有帮助吗?

解决方案

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top