【问题标题】:How to fill a rectangle region with Semi-transparent brush in MFC?如何在 MFC 中使用半透明画笔填充矩形区域?
【发布时间】:2014-04-24 03:04:55
【问题描述】:

我需要在 mfc 中用半透明颜色/画笔填充一个矩形区域。我怎样才能做到这一点?

【问题讨论】:

    标签: visual-c++ mfc gdi


    【解决方案1】:

    您不能只用半透明画笔填充矩形,您需要使用AlphaBlend 或TransparentBlt 之类的东西来创建效果。

    这里有一个例子:

    http://www.codeproject.com/Articles/286/Using-the-AlphaBlend-function

    【讨论】:

      【解决方案2】:

      我找到了解决方案。要用半透明画笔填充矩形区域,我们需要使用GdiPlus对象。

      这里是示例代码:

      void FillSemiTransparentRegion(CDC *pDC, CRect rc)
      {
          if (pDC == NULL || rc.IsRectEmpty() || rc.IsRectNull())
              return;
      
          Graphics gr(pDC->GetSafeHdc());
      
          SolidBrush br(Color(100, 0, 0, 0));    // Alpha, Red, Blue, Green
      
          gr.FillRectangle(&br, rc.left, rc.right, rc.Width(), rc.Height());
      }
      

      【讨论】:

      • gr.FillRectangle(&br, rc.left, rc.top, rc.Width(), rc.Height());
      猜你喜欢
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多