2012-10-07 67 views
6

he utilizado 16x16 imágenes px en mi solicitud, de modo que consiga los bordes nítidos dpi del ordenador y sin cambio de tamaño automático en la configuración de ppp estándar de 96.usar una imagen diferente en función de la configuración

Cuando el usuario cambia su configuración de dpi, las imágenes se agrandan, y como los archivos de origen son solo 16x16, se ven naturalmente malos. ¿Hay alguna manera de que pueda proporcionar imágenes múltiples para una fuente de imagen en particular, y la mejor será elegida automáticamente? Por ejemplo, proporciono imágenes con el tamaño de 16x16, 20x20 y 24x24 píxeles, cuando el tamaño de la imagen es 16x16 [unidades wpf], entonces tengo una combinación perfecta para 96, 120 y 144 ppp?

Respuesta

0

Lo mejor que puedo pensar es configurar el image source dynamically en tiempo de ejecución según la configuración de DPI del sistema. En código subyacente puede ajustar dinámicamente gusta -

ImageViewer1.Source = new BitmapImage(new Uri(@"\\myserver\\folder1\\sample.png")); 

Escuchar a este evento en su clase para ser notificado acerca de los valores de dpi cambiado de equipo - Microsoft.Win32.SystemEvents.DisplaySettingsChanged. Detalles de la misma se pueden encontrar aquí - System Events

Además, se puede obtener el valor del sistema dpi utilizando el siguiente código -

float dpiX, dpiY; 
Graphics graphics = this.CreateGraphics(); 
dpiX = graphics.DpiX; 
dpiY = graphics.DpiY; 

Mover esta lógica a una propiedad y basados ​​en el valor de la propiedad, establecen dinámicamente el fuente de imagen.

Cuestiones relacionadas