【问题标题】:C# designer flow chart app - how?C# 设计器流程图应用程序 - 如何?
【发布时间】:2010-09-28 16:11:15
【问题描述】:

嗨 我是 C# WPF 的新手。 C#中有一个流程图WPF程序。 该程序可以显示对象和它们之间的连接箭头。 即例如

========           ========
|      |           |      |
| obj1 |  ------>  | obj2 |
========           ========

1 - 右键单击​​每个对象时如何为每个对象添加视觉功能? 即,当我用鼠标右键单击一个对象时,我希望能够更改它属于某个应用程序的属性。

2 - 如何创建和生成包含上述对象的关系信息的文件。即 obj1 流向 obj2

感谢您分享您的想法

【问题讨论】:

    标签: c# .net wpf flowchart


    【解决方案1】:

    1) 您需要编写在鼠标点击事件中使用的命中测试代码。您需要检查每个对象的屏幕位置,以确定单击鼠标时哪些对象(如果有)位于指针“下方”。从那里您可以为您想要实现的功能显示适当的上下文菜单。

    2) 如果您只是想保存信息以供应用程序稍后重新打开,简单的序列化为 XML 或二进制就可以了。如果目的是制作用户可读的内容,您将需要编写一个简单的 csv 导出,或者如果输出需要更复杂,则需要一个自定义序列化程序。

    更多信息:

    Hit-testing 是评估点击了什么对象的通用术语,例如,当您在 DataGridView 中单击时,点击测试逻辑可以告诉您点击了哪个单元格/行/列。许多 Widget 类,包括 DataGridView,都有一个 HitTest 方法,该方法将返回一个提供此信息的对象。如果流程图工具对连接的对象使用自定义绘图,那么您将不得不使用点击坐标来确定流程图中的哪个元素已被点击。

    http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.hittest.aspx 记录了 DataGridView 的 HitTest 方法。

    http://www.codeproject.com/KB/list/CSharpHitTest.aspx 是 CodeProject 上的一个示例程序,它在 ListView 中执行测试逻辑。

    【讨论】:

    • 您好 cdkMoose,感谢您的回复。什么是命中测试,对我来说是新术语。是否有一个简单的教程来显示这个命中测试代码并检查对象的屏幕位置?
    【解决方案2】:

    1 - 处理对象的鼠标点击事件,然后做任何你必须做的事情。 2 - 将对象图序列化为 XML 或二进制格式。

    【讨论】:

    • 您好,理查德,感谢您的回复。有这样一个工作设计器应用程序的简单教程吗?
    【解决方案3】:

    我不确定您的应用程序是如何工作的以及您使用了哪些控件,但我建议您查看以下文章,使用您提到的功能实现设计 -

    http://flowpad.codeplex.com/

    WPF Diagram Designer

    http://simulo.codeplex.com/

    【讨论】:

      【解决方案4】:

      来自 Git 的简单库 https://gridwizard.wordpress.com/2015/03/25/simple-c-library-to-render-graph-to-flowchart

      它通过首先计算 Node.x/y 和 Canvas 大小(给定对象图),然后渲染到 HTML5 来帮助生成流程图。您可以使代码渲染适应 WPF(只需添加另一个渲染 - 从他们的 HTML5 渲染器借用代码)。

      【讨论】:

        猜你喜欢
        • 2012-08-24
        • 2015-01-16
        • 2010-12-16
        • 1970-01-01
        • 2013-11-20
        • 1970-01-01
        • 1970-01-01
        • 2011-01-13
        • 1970-01-01
        相关资源
        最近更新 更多