C # дизайнер блок-схема приложения - как? - PullRequest
3 голосов
/ 28 сентября 2010

Привет, я новичок в C # WPF.Есть потоковая программа WPF на C #.Программа может отображать объекты и соединять стрелки между ними.например,

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

1 - Как добавить визуальную функцию к каждому объекту при щелчке правой кнопкой мыши по ним?то есть, когда я щелкаю правой кнопкой мыши по объекту, мне нравится иметь возможность изменять его свойства, принадлежащие приложению.

2 - как мне создать и сгенерировать файл, содержащий информацию об отношениях для объектов вышет.е. obj1 переходит в obj2

Спасибо, что поделились своими мыслями

Ответы [ 4 ]

3 голосов
/ 28 сентября 2010

1) Вам нужно будет написать код для проверки попадания, который будет использоваться в событии щелчка мышью. Вам необходимо проверить местоположение на экране каждого из ваших объектов, чтобы определить, какой (если есть) объект находился «под» указателем при нажатии мыши. Оттуда вы можете отобразить соответствующее контекстное меню для функциональности, которую вы хотите реализовать.

2) Если вы просто хотите сохранить информацию для последующего повторного открытия приложением, простая сериализация в XML или Binary будет работать нормально. Если целью является создание удобочитаемого пользователем контента, вам необходимо написать простой экспорт в CSV или, если выходные данные должны быть более сложными, настраиваемый сериализатор.

Подробнее:

Тестирование попадания - это общий термин для оценки объекта, по которому щелкнули, например, когда вы щелкаете в DataGridView, логика тестирования попадания может сказать вам, по какой ячейке / строке / столбцу был нажат Многие классы Widget, включая DataGridView, имеют метод HitTest, который возвращает объект, который предоставляет эту информацию. Если инструмент потоковой диаграммы использует пользовательский чертеж для связанных объектов, вам придется выполнить работу с использованием координат щелчка, чтобы определить, на каком элементе в потоковой диаграмме был выбран элемент.

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.hittest.aspx документирует метод HitTest для DataGridView.

http://www.codeproject.com/KB/list/CSharpHitTest.aspx - это пример программы на CodeProject, которая выполняет проверку логики в ListView.

2 голосов
/ 28 сентября 2010

1 - обрабатывайте события щелчка мыши для объектов и делайте все, что нужно. 2 - Сериализация графа объекта в XML или двоичный формат.

1 голос
/ 29 сентября 2010

Я не уверен, как работает ваше приложение и какие элементы управления вы использовали, но я бы посоветовал вам взглянуть на следующие статьи, в которых реализованы дизайны с упомянутыми вами функциями -

http://flowpad.codeplex.com/

Дизайнер диаграмм WPF

http://simulo.codeplex.com/

0 голосов
/ 11 апреля 2015

Простая библиотека из Git https://gridwizard.wordpress.com/2015/03/25/simple-c-library-to-render-graph-to-flowchart

Помогает генерировать блок-схему, сначала вычисляя Node.x / y и размер холста (с учетом графа объекта), а затем визуализируя в HTML5. Вы можете адаптировать код рендеринга к WPF (просто добавив еще один рендер - заимствовать код из их рендерера HTML5).

...