Мне нужно нарисовать большую интерактивную древовидную структуру в C # WinForms - корпоративную иерархию.
Помимо алгоритма, который будет упорядочивать блоки в дереве, который, вероятно, будет довольно сложным, яЯ не совсем уверен в том, как реализовать настоящий холст и код для рисования.
На первый взгляд, я мог бы создать гигантское изображение (или матрицу больших изображений) и использовать Graphics
или BufferedGraphics
для рендеринга небольшой области, заданной для увеличения масштаба пользователя.Это даст эффект масштабирования и панорамирования , который вы можете увидеть на Картах Google.
Что касается интерактивности, что здесь можно сделать?Мне бы хотелось, чтобы пользователь мог выделять определенных людей (людей в определенном месте возникновения затрат, людей, которые являются подрядчиками и т. Д.).Кроме того, было бы неплохо, если бы дерево показывало все больше информации о персонале, когда пользователь увеличил масштаб.Должен ли я просто проводить тестирование попаданий с событием MouseMove
и программно добавлять / удалять / изменять вещи, составляющие картинку на холсте?
Следует ли мне избегать использования GDI и, возможно, использоватьDirectDraw вместо этого?Я не хочу переусердствовать - я просто хочу иметь возможность визуально представить структуру и дать пользователям возможность распечатать ее.
В качестве альтернативы, есть ли (бесплатная) библиотека, которая позволяет масштабировать ипанорамирование с интерактивностью?Я мог бы немного спросить, но, может быть, тот, который также может обрабатывать древовидные структуры?
У меня есть опыт работы с каждой отдельной концепцией в меньшем масштабе, однако ничто не собрало в такую большую структуру, как эта.Я предсказываю, что если я сделаю что-то не так, это может превратиться во что-то очень медленное, медленное и перегруженное памятью.
Я только баловался с WPF.Я почти исключительно использую WinForms в .Net - есть ли в WPF что-то, что значительно облегчит эту задачу?