Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
GDI+ puede escalar automáticamente una imagen a medida que se dibuja, lo que reduciría el rendimiento. Como alternativa, puede controlar el escalado de la imagen pasando las dimensiones del rectángulo de destino al DrawImage método .
Por ejemplo, la siguiente llamada al DrawImage método especifica una esquina superior izquierda de (50, 30), pero no especifica un rectángulo de destino.
e.Graphics.DrawImage(image, 50, 30); // upper-left corner at (50, 30)
e.Graphics.DrawImage(image, 50, 30) ' upper-left corner at (50, 30)
Aunque esta es la versión más sencilla del DrawImage método en términos del número de argumentos necesarios, no es necesariamente la más eficaz. Si la resolución usada por GDI+ (normalmente 96 puntos por pulgada) es diferente de la resolución almacenada en el Image objeto, el DrawImage método escalará la imagen. Por ejemplo, supongamos que un Image objeto tiene un ancho de 216 píxeles y un valor de resolución horizontal almacenado de 72 puntos por pulgada. Dado que 216/72 es 3, DrawImage escalará la imagen para que tenga un ancho de 3 pulgadas en una resolución de 96 puntos por pulgada. Es decir, DrawImage mostrará una imagen con un ancho de 96x3 = 288 píxeles.
Incluso si la resolución de pantalla es diferente de 96 puntos por pulgada, GDI+ probablemente escalará la imagen como si la resolución de pantalla fuera de 96 puntos por pulgada. Esto se debe a que un objeto GDI+ Graphics está asociado a un contexto de dispositivo y cuando GDI+ consulta el contexto del dispositivo para la resolución de pantalla, el resultado suele ser 96, independientemente de la resolución de pantalla real. Puede evitar el escalado automático especificando el rectángulo de destino en el DrawImage método .
Ejemplo
En el ejemplo siguiente se dibuja la misma imagen dos veces. En el primer caso, no se especifica el ancho y el alto del rectángulo de destino y la imagen se escala automáticamente. En el segundo caso, se especifica que el ancho y el alto (medidos en píxeles) del rectángulo de destino sean los mismos que el ancho y el alto de la imagen original. En la ilustración siguiente se muestra la imagen representada dos veces:
Image image = new Bitmap("Texture.jpg");
e.Graphics.DrawImage(image, 10, 10);
e.Graphics.DrawImage(image, 120, 10, image.Width, image.Height);
Dim image As New Bitmap("Texture.jpg")
e.Graphics.DrawImage(image, 10, 10)
e.Graphics.DrawImage(image, 120, 10, image.Width, image.Height)
Compilar el código
El ejemplo anterior está diseñado para su uso con Windows Forms y requiere PaintEventArgse
, que es un parámetro del Paint controlador de eventos. Reemplaza Texture.jpg por un nombre de imagen y una ruta de acceso válidos en tu sistema.
Consulte también
.NET Desktop feedback