WPF - высота холста в пикселях - PullRequest
3 голосов
/ 04 марта 2009

Как я могу определить ширину в пикселях для холста (который имеет определенную ширину)?

У меня есть растровое изображение в элементе управления AnimatedImage, и я знаю ширину растрового изображения в пикселях, и я хочу масштабировать растровое изображение так, чтобы оно по горизонтали точно соответствовало холсту. Как я могу определить эту шкалу?

Примечание. Мне не нужно использовать RenderTargetBitmap, поскольку растровое изображение уже загружено.

1 Ответ

13 голосов
/ 04 марта 2009

В WPF устройства не зависят от устройства. Формула для определения фактического размера пикселя в единице:

пикселей на единицу WPF = постоянный размер WPFUnit * разрешение монитора;

Размер вашего элемента в пикселях = Пикселей на единицу WPF * MyElement.ActualWidth

Постоянный размер блока WPF составляет 1/96. Если я правильно помню, DPI монитора можно найти как свойства в классе, возвращенном из SystemInformation.GetPrimaryMonitor или чем-то подобным.

ActualWidth FrameworkElement в единицах, не зависящих от устройства, и представляет собой ширину, которую элемент фактически занимает после размещения макета. Просто умножьте это свойство на пиксели на единицу WPF, которую вы рассчитали выше, и вы получите ответ.

У меня есть подозрение, что вы делаете много ручного кодирования. Растягивание изображений и других визуальных элементов любым желаемым способом обычно может быть достигнуто просто путем установки свойств для рассматриваемого элемента управления / кисти. Вы пытались сделать HorizontalAlignment = "Stretch" и VerticalAlignment = "Center" для элемента, который содержит растровое изображение?

...