【问题标题】:CDC object and colors intersectionCDC 对象和颜色交集
【发布时间】:2012-11-13 15:28:57
【问题描述】:

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

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

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

但我得到的只是这个:

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

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

谢谢。

【问题讨论】:

    标签: mfc drawing


    【解决方案1】:

    无论 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

    【讨论】:

    • 我想你的意思是画笔而不是钢笔,对吧?笔画轮廓,画笔画内线。 SetBkMode 只对文字背景有效。
    猜你喜欢
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多