Я пытаюсь визуализировать график и позволить людям играть с ним. Я нашел отличную библиотеку Graph#, которая может создать начальный макет, чтобы покрыть эту часть. Теперь мне нужно сделать контрол, который его реально отрисовывает и обеспечивает необходимую интерактивность.
Graph # поставляется с хорошим визуализатором, однако мне он не нравится, потому что он написан на WPF (в то время как мое приложение - WinForms), и потому что я хочу добавить еще несколько интерактивных опций, которые в любом случае потребовали бы его переделки. .
Графы, которые я рисую, обычно будут довольно большими, примерно со 100 вершинами и таким же количеством ребер (графы будут деревьями в 99% случаев). Это означает, что результирующий рендеринг может иметь размер до 2000 на 2000 пикселей и даже больше. Пользователи должны иметь возможность увеличивать и уменьшать масштаб, прокручивать, выделять и перетаскивать вершины и ребра, а также получать всплывающие окна с дополнительной информацией при наведении курсора на вершину.
Я беспокоюсь, что стандартный System.Drawing не сможет обеспечить приличную скорость для этого. Я хотел бы, чтобы операции перетаскивания/масштабирования/прокрутки были плавными, а всплывающие окна также должны открываться с небольшой анимацией. Что-то вроде 20 кадров в секунду должно быть необходимостью.
Я знаю, что могу попытаться ускорить работу, предварительно отрендерив множество элементов и сохранив их в виде растровых изображений в памяти, но это, вероятно, займет много оперативной памяти, и я все еще не уверен, что это обеспечит необходимую производительность. .
о чем ты думаешь?