WPF может представить путь строки с 300 000 точек на нем в чувствительной к производительности среде?

Вы можете установить пакет вручную, используя следующую команду

install.packages('package.zip', lib='destination_directory',repos = NULL)

См. Справку ?install.packages, для дальнейшего описания

12
задан Giffyguy 21 August 2009 в 05:51
поделиться

6 ответов

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

Если производительность и количество визуалов - это то, что вам нужно ... Я сомневаюсь, что вы найдете более эффективный подход, чем программирование непосредственно на визуальном уровне WPF (ссылки: 1 , ] 2 ). Мои первоначальные результаты от использования этого подхода были очень положительными.

Это будет даже более производительным, чем переопределение OnRender, поскольку это побудит вас воспользоваться преимуществами подсистемы рисования сохраненного режима WPF (где все инструкции рисования кэшируются).

То есть, если все, что вам нужно обновить, это точка на линии, то обновление точки приведет к обновлению линии Visual, но победит ' t принудительно обновить остальную часть графика (оси, линии сетки и т. д.) ... поскольку инструкции по рисованию для них сохраняются и будут повторно использоваться (поскольку они не обновляются).

Глава 14 в ] В Pro WPF на C # 2008 Мэтью Макдональда есть отличный раздел (названный «Визуальные элементы»), посвященный программированию с использованием визуального слоя WPF. В главе 2 WPF Control Development Unleashed также есть раздел на странице 13, где он обсуждает, как подход DrawingVisual будет идеальным для компонента построения диаграмм. Наконец, Чарльз Петцольд написал в MSDN Magazine статью , в которой лучшим общим решением для построения диаграммы рассеяния был подход DrawingVisual.

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

12
ответ дан 2 December 2019 в 04:43
поделиться

Если вы хотите, чтобы это было быстро, лучший способ - унаследовать от Control и реализовать OnRender - обычно в этом нет необходимости, но для вашего приложения это может быть.

Кроме того, давайте сделаем шаг назад - экран, на который вы рендерит, определенно не имеет ширины 300 тыс. пикселей; перед тем, как перейти к рендерингу, уменьшите буфер, усредняя n узлов в один, пока не получите что-то более близкое к разрешению фактического устройства, затем нарисуйте его на экране.

11
ответ дан 2 December 2019 в 04:43
поделиться

Я не знаю ответа, но написание кода для быстрого теста не займет намного больше времени, чем когда вы его разместили. Также см. эту ветку для аналогичного обсуждения.

4
ответ дан 2 December 2019 в 04:43
поделиться

Если вы не используете .NET 3.5 SP1, просто не используйте шейдерные эффекты. В противном случае мало что нужно сделать как разработчику WPF, чтобы убедиться, что он использует аппаратное ускорение.

1
ответ дан 2 December 2019 в 04:43
поделиться

Возможно, стоит взглянуть на библиотеку WPF DynamicDataDisplay . Я использую его недавно и не испытываю проблем с большими объемами данных. Это всего лишь ранняя версия (на самом деле 0.3), поэтому документации не так много, но есть примеры, показывающие, как ее использовать. Надеюсь, этого будет достаточно, чтобы вы начали.

SimulationSample генерирует много данных, так что это должно быть хорошим местом для начала.

4
ответ дан 2 December 2019 в 04:43
поделиться

ИМХО, Пол, кажется, на правильном пути, посмотрите разделы о сглаживании карт, некоторые примеры используют результаты выборов во Флориде 2000 года (~9M голосов 18+M всего людей) для набора данных.

По аналогии с темой AgileJon, я бы использовал просто ручное создание растровой карты, если нет прямой техники для лучшего отображения вашего набора данных. Я создаю визуализации диаграмм рассеяния, которые легко могут быть 16 000 000 (16 миллионов+) за несколько секунд, полная 32-битная палитра ARGB.

Вы, кажется, заметили: "Но возвращение к растровым изображениям кажется гигантским шагом назад", я бы не спешил так говорить, вселенная ограничена физическими пределами.

Я сослался в другом посте на эту статью codeproject, которая делает многие десятки тысяч 3D графиков + анимация и т.д....

0
ответ дан 2 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: