我正在尝试绘制一个蓝色矩形和一个黄色矩形的交集
,-------------------,
| |
| Blue |
| ,-------+---------,
| | Green | |
'-----------+-------, Yellow |
|_________________|
使用方法CDC :: Polygon和CDC :: SetBkMode(TRANSPARENT)
但我得到的是:
,-------------------,
| |
| Blue |
| ,-------+---------,
| | |
'-----------+ Yellow |
|_________________|
请给我一个简单的解决方案,坚持使用MFC。
感谢。
答案 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。