1

我正在尝试绘制一个蓝色矩形和一个黄色矩形的交点

 ,-------------------,
 |                   |
 |     Blue          |
 |           ,-------+---------,
 |           | Green |         |
 '-----------+-------, Yellow  |
             |_________________|

使用方法 CDC::Polygon 和 CDC::SetBkMode(TRANSPARENT)

但我得到的是:

 ,-------------------,
 |                   |
 |     Blue          |
 |           ,-------+---------,
 |           |                 |
 '-----------+      Yellow     |
             |_________________|

请给我一个坚持使用 MFC 的简单解决方案。

谢谢。

4

1 回答 1

3

无论 SetBkMode 是 TRANSPARENT 还是 OPAQUE,您都不能这样做,因为 Polygon 使用当前选定的笔刷来填充多边形的内部。相反,您应该做的是:

首先绘制一个矩形,然后绘制另一个矩形,然后使用 CRect::IntersectRect 计算两个矩形的交集(参见http://msdn.microsoft.com/en-us/library/262w7389(v=vs.100) .aspx)。

如果相交不是空的,则计算生成的“颜色混合”并创建适当的画笔,并使用它绘制第三个矩形。

有关如何混合颜色的更多信息,请在 StackOverflow 上查看 RGB 值的加色混合算法。

于 2012-11-13T15:37:50.693 回答