CDC对象和颜色交集

时间:2012-11-13 15:28:57

标签: mfc drawing

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

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

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

但我得到的是:

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

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

感谢。

1 个答案:

答案 0 :(得分:3)

无论SetBkMode是TRANSPARENT还是OPAQUE,都无法执行此操作,因为Polygon使用当前选定的画笔来填充多边形的内部。相反,你应该做的是:

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

如果交点非空,则计算得到的“颜色混合”并创建适当的画笔,然后使用它绘制第三个矩形。

有关如何混合颜色的更多信息,请在StackOverflow上查看Algorithm for Additive Color Mixing for RGB Values