Re[6]: [WPF] Charts
От: Dmitry_Sharp2008  
Дата: 15.02.12 19:28
Оценка:
Здравствуйте, alesterre, Вы писали:

A>В общем, или не давать пользователю смотреть сразу весь график (~2к точек + столько же линий + сетка и надписи), или как-то пытаться сделать свое нормальное кэширование в битмап, чтобы двигать по экрану битмап, а не фигуры. Или кэшировать кусочками


A>Как вообще правильно двигать сложное векторное изображение по экрану? Перерисовывать вручную каждый кадр или двигать целиком контейнер с изображением, заставляя впф думать самой?


Я полагаю, что вы уже убедились, что в случае отрисовки большого числа примитивов(наследники Shape), WPF быстро сдается.
Похоже, что остается несколько вариантов: 1. Ограничивать число видимых на экране элементов до приемлемого уровня быстродействия.
2. Заняться ручной подготовкой конечного изображения используя средства работы с 2д такие, как GDI(GDI+) или аналогичными библиотеками.
3. Уходить в интеропп с DirectX. Рисовать все его средствами и полученную поверхность передавать в D3DImage.Этот вариант — самый производительный и, похоже, наиболее сложный.
Если оставаться на уровне "родных" WPF средств работы с 2д, то прийдется пробовать создавать дополнительные потоки отрисовки(что бы создать иллюзию "свободы" основного интерфейса для пользователя).
Далее думать о комбинации чего то вроде StreamGeometry, DrawingBrush, DrawingImage и желательно с "заморозкой"(Freez) кистей, перьев.
Стоит подумать о том, как бы сетку создавать заливкой области текстурой используя DrawingBrush.
Но в любом случае все это как то неуместно смотрится.
Наиболее адекватные решения- п.2 или 3.

P.S. Что там за "артефакты" лезут, да еще и при полноэкранном размере- вообще не представляю. Может драйверы видеокарты "воду мутят"? У меня на Radeon HD 2600Pro под Windows 7 были артефакты вообще на всех WPF приложениях.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.