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