Рисование на мультиэкране с помощью WPF

Я создал приложение, которое отображает самое верхнее окно на каждом мониторе, чтобы покрыть все доступное место.

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

Как я могу сделать так, чтобы рисовать в обоих окнах одновременно?

Спасибо за вашу помощь,

2 ответа

Решение

Вы можете создать окно, которое простирается через оба экрана.

Используйте коллекцию Screens в System.Windows.Forms (или там, где она есть в WPF) и свойство WorkingArea, чтобы вычислить правильные экстенты окна.

Будьте осторожны с установками с несколькими мониторами, где основные экраны находятся на противоположной стороне от дополнительных экранов или если экраны расположены друг над другом.

Мы делаем это успешно в нашем приложении.

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

Другие вопросы по тегам