Как преобразовать размер 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».

Ответы на вопрос(4)

Ваш ответ на вопрос