【问题标题】:How can I draw a patternBrush with transparent backround (GDI)?如何绘制具有透明背景 (GDI) 的图案画笔?
【发布时间】:2010-11-04 00:52:37
【问题描述】:

我无法绘制具有透明背景的图案。这是我的 sn-p:

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

谢谢!

【问题讨论】:

    标签: c++ mfc gdi


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-04-16
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多