【问题标题】:MFC: Drawing lines of different colorsMFC:绘制不同颜色的线条
【发布时间】:2023-03-19 03:51:01
【问题描述】:

我有两个系列的 N 点,我想用两种不同的颜色绘制图形。在使用 MFC CDC 和 CPen 对象以及作为 CDC::MoveTo/CDC::LineTo 调用的一堆时,我找不到任何明确说明执行此简单任务的最佳方法的任何内容。

似乎每个设备上下文一次只能选择一个笔对象,所以我最好选择一支笔,画一条线,选择另一支笔,画另一条线......还是遍历我的数据一次,在每个点以某种方式在笔之间交换(不断选择每支笔,或以某种方式更改笔颜色)。

【问题讨论】:

    标签: graphics mfc


    【解决方案1】:

    我认为你最好的办法是按照你说的做,用第一支笔画出第一组 N 点,然后选择第二支笔,画出第二组 N 点。

    【讨论】:

    • 如果我缺少您需要的东西,请告诉我,我会修改我的答案。
    • 我想这是一个选择笔有多少开销的问题,或者是否有任何方法可以在创建笔后更改其颜色。复制两个做几乎相同的事情的循环似乎是一种不令人满意的编码方式......
    • 是的,我认为如果您将它们存储在一起,那么 2 遍可能是最好的,并且只有 2 笔选择。
    【解决方案2】:

    一旦创建了笔,就无法更改它的颜色。但是,您确实错过了一个选项,即用该颜色的笔绘制给定颜色的所有段,然后切换笔并绘制另一种颜色的所有段。该选项可能不会提供相同的结果,因为两个段的重叠将取决于先绘制哪个段。

    尽管看起来很不愉快,但我认为您最好的选择是为每种新颜色更换笔并按顺序检查点。

    【讨论】:

    • 我看不出这是一个不同的选项——我选择用它们之间的连接线段来绘制点,如果有相同的点/线段,就没有逃脱的覆盖另一个。它归结为......是否最好循环点,并在其中循环笔颜色......而不是循环笔颜色,并在其中循环点。我显然从 Brian 那里听到了后者,我想我也从你那里听到了同样的声音。
    猜你喜欢
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 2019-10-02
    相关资源
    最近更新 更多