Pregunta

¿Cómo puedo determinar el ancho en píxeles para un lienzo (que tiene un cierto ancho)?

Tengo un mapa de bits en un control AnimatedImage, y sé el ancho del mapa de bits en píxeles, y quiero escalar el mapa de bits para que se ajuste horizontalmente exactamente al lienzo. ¿Cómo puedo determinar esta escala?

Nota: No necesito usar RenderTargetBitmap, porque el mapa de bits ya está cargado.

¿Fue útil?

Solución

En las unidades WPF son independientes del dispositivo. La fórmula para determinar el tamaño de píxel real de una unidad es:

Píxeles por unidad WPF = Tamaño de unidad constante * PPP * monitor DPI;

Tamaño de su elemento en píxeles = Píxeles por unidad WPF * MyElement.ActualWidth

El tamaño de la unidad WPF constante es 1/96. Si no recuerdo mal, el DPI del monitor se puede encontrar como propiedades en la clase devuelta por SystemInformation.GetPrimaryMonitor o algo similar.

ActualWidth de un FrameworkElement está en unidades independientes del dispositivo y es el ancho que el elemento realmente ocupa después de que se realiza el diseño. Simplemente multiplique esta propiedad por los píxeles por unidad WPF que calcule arriba y obtendrá su respuesta.

Sin embargo, sospecho que está haciendo mucha codificación manual. Estirar imágenes y otros elementos visuales de cualquier manera deseada generalmente se puede lograr simplemente estableciendo propiedades en el control / pincel en cuestión. ¿Has intentado hacer HorizontalAlignment = " Stretch " y VerticalAlignment = " Center " para el elemento que contiene el mapa de bits?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top