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