Рисование на мультиэкране с помощью WPF
Я создал приложение, которое отображает самое верхнее окно на каждом мониторе, чтобы покрыть все доступное место.
Затем я хотел бы позволить нарисовать прямоугольник на окнах. Итак, я создаю прямоугольник, который добавляю к окну при перемещении мыши и щелчке мыши... Это работает, за исключением случаев, когда я рисую прямоугольник, который начинается в окне и заканчивается в другом. Конечно, потому что это не одно и то же окно...
Как я могу сделать так, чтобы рисовать в обоих окнах одновременно?
Спасибо за вашу помощь,
2 ответа
Вы можете создать окно, которое простирается через оба экрана.
Используйте коллекцию Screens в System.Windows.Forms (или там, где она есть в WPF) и свойство WorkingArea, чтобы вычислить правильные экстенты окна.
Будьте осторожны с установками с несколькими мониторами, где основные экраны находятся на противоположной стороне от дополнительных экранов или если экраны расположены друг над другом.
Мы делаем это успешно в нашем приложении.
Другим (и, вероятно, лучшим) подходом к этому было бы сохранение данных о прямоугольниках в классе модели (с использованием подхода MVVM). Затем каждый вид смотрит на отдельную часть виртуального холста. Таким образом, они оба слушают обновления данных из модели и соответственно рисуют свою часть дисплея.