Проблемы с рендерингом большой мозаичной карты в WPF - PullRequest
5 голосов
/ 05 октября 2011

Каков наилучший способ управления очень большим количеством изображений (более 10 000) в WPF?Это для редактора 2D-карт, похожего на этот: http://www.mapeditor.org/.

На данный момент у меня есть холст со всеми плитками в качестве изображения и список, содержащий различные изображения на выбор.Каждая плитка добавляется на холст как дочерняя, а затем сохраняется в списке для последующего доступа.Вы рисуете на холсте, устанавливая свойство Source для плитки, выбранное в списке.Он хорошо работает с картами плиток размером 50x50, но со всем, что выше, вызывает задержки при загрузке, как правило, медленное приложение.

Есть предложения по этому поводу?Может быть, QT больше подходит вместо wpf?

Заранее спасибо

1 Ответ

6 голосов
/ 05 октября 2011

Оформить Реализация виртуализированной панели серия статей.

Виртуализированные панели эффективны, потому что:

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

  • Элементы используются повторно, вместо того, чтобы многократно создаваться и удаляться - старая ячейка просто заполняется новым содержимым (поставляется с новым DataContext) и используется в новом местоположении.

Вы также можете попытаться использовать DataGrid WPF для этого, он поддерживает виртуализацию из коробки и, по сути, то, что вы пытаетесь сделать.

WPF, безусловно, может сделать это,если реализовано правильно (если вы можете сделать это в JavaScript, вы, безусловно, можете сделать это и в WPF).

...