【问题标题】:How can I tell if a shape is combined or not?如何判断一个形状是否组合在一起?
【发布时间】:2015-05-18 08:34:23
【问题描述】:

给定一个Shape 对象,我如何判断该形状是否是形状的组合?

我可以使用 BreakApartEx() 并获得一个我可以数数的 ShapeRange,但如果可能的话,我宁愿不破坏形状的一部分。

我正在使用 Corel Draw X7。

【问题讨论】:

    标签: c# coreldraw


    【解决方案1】:

    创建一个重复的形状,然后使用 BreakApartEX 和 shaperange.count 怎么样? 然后删除它。 所以,你仍然保持原来的形状。

    【讨论】:

    • 这是个好主意,如果找不到其他解决方案,我很可能会这样做。
    • 这里是按照你的建议做的一个尝试:gist.github.com/mgnslndh/6b696b0197c31ddc921c
    • @Magnus 另一种方法是创建一个重复的形状,拆分,计数,然后撤消拆分和重复的形状。 Begin Command Group 和 End Command Group 可用于使此操作更加健壮(将副本分组,然后拆分,然后计数,然后结束组,然后撤消一次)。这将避免在您的撤消历史记录中出现虚假条目。
    【解决方案2】:

    或者您可以尝试 CScript.GetCurveSubpathCount。 您应该先添加曲线形状检查。

    祝你好运

    【讨论】:

    • 当你分解一个形状时,是否保证你得到与子路径相同数量的形状?
    • @MagnusLindhe 是像对象一样的曲线,还是像混合组这样更复杂的东西,你正在分解?
    【解决方案3】:

    是的,但正如我们所知,组合对象必须是曲线形状, 所以应该有一个代码来检查所选对象是否是曲线形状。

    【讨论】:

      【解决方案4】:

      是的,但正如我们所知,组合对象必须是曲线形状, 所以应该有一个代码来检查所选对象是否是曲线形状。

      可能只是这样的简单代码:

      Dim s 作为形状 暗淡无光

      对于 activeselectionrange 中的每个 s 如果 s.type=cdrcurveshape 那么 l = CorelScript.GetCurveSubpathCount '您可以将子路径计数显示为 msg 或在文本框中。 MsgBox "形状有 " & l & " 子路径", vbOKOnly, "MLindhe:)" 万一 下一秒

      【讨论】:

        猜你喜欢
        • 2015-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 2018-04-15
        • 1970-01-01
        • 2012-06-07
        • 1970-01-01
        相关资源
        最近更新 更多