代码之家  ›  专栏  ›  技术社区  ›  rockeye

如何绘制具有透明背景(GDI)的PatternBrush?

  •  0
  • rockeye  · 技术社区  · 16 年前

    我不能用透明的背景绘制图案。这是我的片段:

    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);
    

    doc on msdn 没有提到透明度。我想这个模式可以用吗?或者这是个虫子?

    谢谢!

    1 回复  |  直到 16 年前
        1
  •  1
  •   Kirill V. Lyadvinsky    16 年前

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

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