Контроль плотности изображения Silverlight высокой плотности
Я просматривал элементы управления цветом Silverlight, чтобы отображать большое количество образцов, (~ 10000 точек данных в пяти отдельных сериях - до 50 000 точек).
Я обнаружил, что существующие опции, созданные Dundas, Visifire, Microsoft и т.д., являются крайне плохими исполнителями при отображении более нескольких сотен точек данных.
Я считаю, что проблемы с производительностью с существующими элементами управления диаграммами вызваны интенсивным использованием векторной графики.
Одним из решений Ergo будет элемент управления на стороне клиента, который использует класс WritableBitmap для создания растровой диаграммы.
Прежде чем я упаду слишком далеко вниз, кровельное отверстие для колес - , кто-нибудь нашел стороннего или OSS-управления, которое будет управлять большим количеством точек данных на искровой линии?
Ответы
Ответ 1
Ознакомьтесь с Visiblox (http://www.visiblox.com/). Графики. Я работаю над телеметрическим приложением в тот момент, который использует три из своих диаграмм в одном компоненте Silverlight, составляя около 36 000 точек, и очень мало замедляется с точки зрения производительности, если таковая вообще существует.
У них есть пример высокой производительности на их веб-сайте здесь - http://www.visiblox.com/examples/LargeDataSets. Я решил использовать Visiblox после перехода на следующий пост в блоге:
Новое сравнение производительности: http://www.visifire.com/blog/2011/12/02/fast-silverlight-charts/
Старое сравнение производительности: http://www.scottlogic.co.uk/blog/colin/2010/12/visiblox-visifire-dynamicdatadisplay-charting-performance-comparison/
Мой телеметрический пример теперь является частью CodeProject статьи, которую я создал, если вы хотите взглянуть!
Ответ 2
Основываясь на рекомендациях здесь, я только что испытал Visiblox и Infragistics.
Visiblox имеет хороший опыт разработчика, чистые API, без раздувания. В то время как производительность в порядке на несколько тысяч точек данных, производительность ломается, когда вы переходите в диапазон 100 тыс. Здесь образец Visiblox с несколькими тысячами точек (вы можете загрузить образец и просто настроить количество точек данных).
Теперь, общий аргумент здесь заключается в том, что вы не должны привязывать столько данных к диаграмме в любом случае, но должны сделать некоторую обрезку заранее. Я согласен с этим, но в идеале, мне нужен элемент управления диаграммой, который позаботится обо мне. Получение Масштабирования, панорамирования и всех этих прав - нетривиальные задачи, и я был бы рад выложить несколько 100 $, чтобы получить эту функциональность. Это простой экономический здравый смысл, чтобы не изобретать велосипед здесь.
Инфраструктура, безусловно, получает это право. Я могу связать миллион odatapoints и получить плавный результат. Здесь образец Infragistics.
Тем не менее, Infragistics устанавливает множество нежелательных (локальное веб-приложение IIS с образцами, которые вы также можете видеть в Интернете), и помимо (отличных) образцов и документации на уровне кода, я пропускаю некоторые высокоуровневые введения в каждый компонент и отдельные модули.
Поскольку многие люди из SO рекомендуют Telerik элементы управления для своих чистых API, документации и поддержки разработчиков, я также посмотрел на их управление диаграммой. Тем не менее, я должен признать, что я нахожу его довольно медленным (Масштабирование занимает примерно 500-1000 мс, что слишком долго, чтобы чувствовать себя ровным).
Здесь образец Telerik.
Ответ 3
Visifire - это самый быстрый график. Посмотрите ссылку в блоге ниже.
http://www.visifire.com/blog/2011/12/02/fast-silverlight-charts/
На графическом изображении Visifire на 3 - 4 раза быстрее, чем Visiblox..!
![enter image description here]()
Ответ 4
Перед тем, как начать играть с WritableBitmap, взгляните на WriteableBitmapEx
у Рене Шульте, он пишет об этом здесь. Удивительный материал.
Ответ 5
Я не знаю ни одного OSS или сторонних элементов управления, которые будут делать то, что вам нужно.
В одном случае, когда у меня была потребность в 10000 + дататах, мы сделали это, упростив его. Крупнейшим первичным убийцей было количество элементов в каждом потоке данных. Сохраняя элемент простым эллипсом со статической кистью, приложение было довольно быстрым.
Ответ 6
Infragistics утверждает, что может обрабатывать огромные объемы данных в недавно выпущенном xamDataChart.
http://www.infragistics.com/dotnet/netadvantage/silverlight/data-visualization/xam-web-data-chart.aspx#Overview
Ответ 7
Я считаю, что образец Telerik, который вы ищете, можно найти здесь. Он показывает большие объемы данных, которые вы можете увеличить/уменьшить. Они также имеют серверную нагрузку "Производительность" Demo. Вот пример Scatter Chart с сотнями точек данных.
Ответ 8
Посмотрели ли вы на контрольные элементы Telerik? Вот ссылка на одну из их демонстраций, где они используют 100 000 точек данных:
http://demos.telerik.com/silverlight/#Chart/Sampling
Забастовкa >
Следует также упомянуть, что я сам не использовал элементы управления диаграммами, поэтому я не могу ручаться за них. Но демки выглядят хорошо для меня.
ИЗМЕНИТЬ:
Ссылка выше устарела. Вот ссылка на последнюю инкарнацию контрольного элемента Telerik. Теперь они называют это ChartView:
http://demos.telerik.com/silverlight/#ChartView/FirstLook