WPF - высота холста в пикселях
Как я могу определить ширину в пикселях для холста (который имеет определенную ширину)?
У меня есть растровое изображение в элементе управления AnimatedImage, и я знаю ширину растрового изображения в пикселях, и я хочу масштабировать растровое изображение так, чтобы оно по горизонтали точно соответствовало холсту. Как я могу определить этот масштаб?
Примечание: мне не нужно использовать RenderTargetBitmap, потому что растровое изображение уже загружено.
1 ответ
В WPF устройства независимы от устройства. Формула для определения фактического размера в пикселях:
Пикселей на единицу WPF = размер константы WPF Unit * разрешение монитора;
Размер вашего элемента в пикселях = Пикселей на единицу WPF * MyElement.ActualWidth
Постоянный размер блока WPF составляет 1/96. Если я правильно помню, DPI монитора можно найти как свойства в классе, возвращенном из SystemInformation.GetPrimaryMonitor или что-то подобное.
ActualWidth FrameworkElement находится в независимых от устройства единицах и является шириной, которую элемент фактически занимает после размещения макета. Просто умножьте это свойство на пиксели на единицу WPF, которую вы рассчитали выше, и вы получите ответ.
У меня есть подозрение, что вы делаете много ручного кодирования. Растягивание изображений и других визуальных элементов любым желаемым способом обычно может быть достигнуто просто путем установки свойств для рассматриваемого элемента управления / кисти. Вы пытались сделать HorizontalAlignment="Stretch" и VerticalAlignment="Center" для элемента, который содержит растровое изображение?