2009-03-04 1 views
3

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

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

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

ответ

13

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

Число пикселей на элемент WPF = ConstantWPFUnit size * monitor DPI;

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

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

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

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

+0

Вы были правы, я затруднял проблему, вертикальное + горизонтальное выравнивание сделало трюк! Большое спасибо! – melculetz