Red de conocimiento informático - Conocimiento sistemático - Solicitando el uso de C#Graphics.DrawImage,

Solicitando el uso de C#Graphics.DrawImage,

Código:

public void DrawImage(System.Drawing.Image image,System.

Drawing.Rectangle destRect,int srcX,int srcY,int srcWidth, int srcHeight,System.Drawing.GraphicsUnit srcUnit,System.

Drawing.Imaging.ImageAttributes imageAttrs,System.Drawing.

Graphics.DrawImageAbort callback,IntPtr callbackData);

Parámetros

imagen

Imagen

La imagen que se va a dibujar.

destRect

Rectangle

Estructura rectangular, que especifica la posición y el tamaño de la imagen dibujada. Escale la imagen para que se ajuste al rectángulo.

srcX

Int32

La coordenada x de la esquina superior izquierda de la parte de la imagen de origen que se va a dibujar.

srcY

Int32

La coordenada y de la esquina superior izquierda de la parte de la imagen de origen que se va a dibujar.

srcWidth

Int32

El ancho de la parte de la imagen de origen que se va a dibujar.

srcHeight

Int32

La altura de la parte de la imagen de origen que se va a dibujar.

srcUnit

GraphicsUnit

Miembro de la enumeración GraphicsUnit que especifica la unidad de medida utilizada para determinar el rectángulo de origen.

imageAttrs

ImageAttributes

ImageAttributes, que especifica el cambio de color y la información gamma del objeto de imagen.

devolución de llamada

Graphics.DrawImageAbort

Delegado de Graphics.DrawImageAbort, que especifica el método que se llamará durante el dibujo de la imagen. Este método se llama con frecuencia para comprobar si se debe detener según las condiciones determinadas por la aplicación

DrawImage(Image,Rectangle,Int32,Int32,Int32,Int32,GraphicsUnit,ImageAttributes,

Graphics +DrawImageAbort ,IntPtr) ejecución del método.

callbackData

IntPtr

Un valor que especifica datos adicionales para que el delegado Graphics.DrawImageAbort los use al verificar si se debe detener la ejecución del método DrawImage.

Excepción

ArgumentNullException

la imagen es nula.

Información ampliada:

Ejemplo

El siguiente ejemplo de código está diseñado para usarse con Windows Forms y requiere PaintEventArgse, que es el parámetro del controlador de eventos de Paint. .

El código primero define el método de devolución de llamada para el delegado Graphics.DrawImageAbort; la definición se simplifica y solo prueba si el método DrawImage llama a la definición con el parámetro callBackData nulo.

El cuerpo del ejemplo hace lo siguiente:

Crea una instancia del método de devolución de llamada Graphics.DrawImageAbort.

Cree la imagen en el archivo SampImag JPEG en la carpeta de la muestra.

Cree los puntos que definen el rectángulo objetivo dentro del cual se dibujará la imagen.

Cree un rectángulo de origen para seleccionar la parte de la imagen que se va a dibujar.

Establece las unidades de dibujo de gráficos en píxeles.

Dibuja la imagen original en la pantalla.

Crea un rectángulo de destino adicional en el que se dibujará la imagen ajustada.

Crea y establece las propiedades de la imagen ajustada para que tenga un valor de gamma mayor de lo habitual.

Dibuja la imagen ajustada en la pantalla.

Para el rectángulo de destino original no ajustado, la posición posiciona la imagen en la pantalla, y el tamaño del rectángulo de origen y el tamaño y la forma del rectángulo de destino determinan la escala de la imagen dibujada.

Debido a que este ejemplo utiliza una sobrecarga a la que se le pasa un parámetro callBackData, la devolución de llamada Graphics.DrawImageAbort devuelve falso, lo que hace que el método DrawImage continúe y este ejemplo dibuje la imagen ajustada en la pantalla.

Código:

// Definir el método de devolución de llamada DrawImageAbort.

private bool DrawImageCallback6(IntPtr callBackData)

{

// Pruebe la llamada que pasa el parámetro callBackData.

if(callBackData==IntPtr.Zero)

{

// Si no se pasa ningún callBackData, abortar el método DrawImage.

return true;

}

else

{

// Si callBackData pasó , continúe con el método DrawImage.

return false;

}

}

private void DrawImageRect4IntArribAbortData(PaintEventArgs e)

{

// Crear método de devolución de llamada.

Graphics.DrawImageAbort imageCallback

= new Graphics.DrawImageAbort(DrawImageCallback6);

IntPtr imageCallbackData = new IntPtr(1);

// Crear imagen.

Imagen newImage = Image.FromFile("SampImag.jpg");

/ / Crea un rectángulo para mostrar la imagen original.

Rectangle destRect1 = new Rectángulo(100, 25, 450, 150);

// Crea las coordenadas del rectángulo para la imagen de origen.

int x = 50;

int y = 50;

int ancho = 150;

int alto = 150;

GraphicsUnit unit = GraphicsUnit.Pixel;

// Dibuja la imagen original en la pantalla.

e.Graphics.DrawImage(newImage, destRect1, x, y, ancho, alto, unidades );

// Crear rectángulo para la imagen ajustada.

Rectangle destRect2 = new Rectángulo(100, 175, 450, 150);?

// Crear atributos de imagen y establezca una gamma grande.

ImageAttributes imageAttr = new ImageAttributes();

imageAttr.SetGamma(4.0F);

pruebe

{

marcado

{?

// Dra.

w imagen ajustada a la pantalla.

e.Graphics.DrawImage(

newImage,

destRect2,

x, y,

p>

ancho, alto,

unidades,

imageAttr,

imageCallback,

imageCallbackData) ;

}

}

captura (Excepción ex)

{

e.Graphics.DrawString(

ej.ToString(),

nueva fuente("Arial", 8),

Brushes.Black,

nuevo PointF (0, 0) );

}

}