Как преобразовать размер WPF в физические пиксели?
Каков наилучший способ преобразования ширины и высоты WPF (независимо от разрешения) в физические пиксели экрана?
Я показываю содержимое WPF в форме WinForms (через ElementHost) и пытаюсь выработать логику определения размеров. У меня это работает нормально, когда ОС работает по умолчанию 96 точек на дюйм. Но он не будет работать, когда ОС установлена на 120 dpi или другое разрешение, потому что тогда элемент WPF, который сообщает о своей ширине в 96, будет иметь ширину 120 пикселей, что касается WinForms.
Я не смог найти какие-либо настройки «пикселей на дюйм» в System.Windows.SystemParameters. Я уверен, что мог бы использовать эквивалент WinForms (System.Windows.Forms.SystemInformation), но есть ли лучший способ сделать это (читай: способ с использованием API-интерфейсов WPF, а не с помощью API-интерфейсов WinForms и выполнения математических операций вручную)? Каков «лучший способ» конвертировать «пиксели» WPF в реальные пиксели экрана?
РЕДАКТИРОВАТЬ: Я также хочу сделать это, прежде чем элемент управления WPF отображается на экране. Похоже, что Visual.PointToScreen можно было сделать, чтобы дать мне правильный ответ, но я не могу его использовать, потому что элемент управления еще не является родителем, и я получаю InvalidOperationException «Этот Visual не подключен к PresentationSource».