2013-02-02 2 views
1

Мне нужно отобразить много меток на изображении WPF. Маркерами могут быть линии, круги, квадраты и т. Д., И их может быть несколько сотен.Эффективно отображать несколько маркеров на изображении WPF

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

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

Я хотел спросить, что было бы лучшим способом реализовать это? Я думал, что из двух решений:

  • наследоваться от Canvas и убедитесь, что он признан недействительный не для каждого добавленных маркеров, но для ряда маркеров сразу

  • Создать элемент управления, который содержит изображения и изменения его OnDraw рисовать все маркеры

Я был бы признателен некоторые указатели от кого-то с опытом работы с подобной проблемой.

ответ

0

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

+0

В итоге я получил наследство от изображения. Добавлен список маркеров, которые определяют, как отображать себя и вызывать все эти функции рендеринга в OnRender изображения. Поддержка сотен маркеров сейчас. – Dina