Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Graphics.DrawImage-Methode (Image, PointF[], RectangleF, GraphicsUnit, ImageAttributes, Graphics.DrawImageAbort, Int32)

Zeichnet den angegebenen Bereich des angegebenen Image in der angegebenen Größe an der angegebenen Position.

Namespace: System.Drawing
Assembly: System.Drawing (in system.drawing.dll)

public void DrawImage (
	Image image,
	PointF[] destPoints,
	RectangleF srcRect,
	GraphicsUnit srcUnit,
	ImageAttributes imageAttr,
	DrawImageAbort callback,
	int callbackData
)
public void DrawImage (
	Image image, 
	PointF[] destPoints, 
	RectangleF srcRect, 
	GraphicsUnit srcUnit, 
	ImageAttributes imageAttr, 
	DrawImageAbort callback, 
	int callbackData
)
public function DrawImage (
	image : Image, 
	destPoints : PointF[], 
	srcRect : RectangleF, 
	srcUnit : GraphicsUnit, 
	imageAttr : ImageAttributes, 
	callback : DrawImageAbort, 
	callbackData : int
)

Parameter

image

Zu zeichnendes Image.

destPoints

Array von drei PointF-Strukturen, die ein Parallelogramm definieren.

srcRect

RectangleF-Struktur, die den zu zeichnenden Teil des image-Objekts angibt.

srcUnit

Member der GraphicsUnit-Enumeration, der die Maßeinheiten für den srcRect-Parameter angibt.

imageAttr

ImageAttributes, das Informationen über erneutes Einfärben und Gammainformationen für das image-Objekt angibt.

callback

Graphics.DrawImageAbort-Delegat, der eine Methode angibt, die während des Zeichnens des Bildes aufgerufen werden soll. Diese Methode wird häufig aufgerufen, um zu prüfen, ob die Ausführung der DrawImage-Methode gemäß den durch die Anwendung bestimmten Kriterien abgebrochen werden soll.

callbackData

Ein Wert, der zusätzliche Daten angibt, mit denen der Graphics.DrawImageAbort-Delegat prüfen kann, ob die Ausführung der DrawImage-Methode abgebrochen werden muss.

AusnahmetypBedingung

ArgumentNullException

image ist NULL (Nothing in Visual Basic).

Der destPoints-Parameter gibt drei Punkte eines Parallelogramms an. Die drei PointF-Strukturen stellen die obere linke, obere rechte und untere linke Ecke des Parallelogramms dar. Der vierte Punkt wird anhand der ersten drei Punkte ergänzt, sodass ein Parallelogramm gebildet wird.

Der srcRect-Parameter gibt einen rechteckigen Teil des zu zeichnenden image-Objekts an. Dieser Teil wird skaliert und geschert, sodass er in das durch den destPoints-Parameter angegebene Parallelogramm passt.

Diese Überladung mit dem callback-Parameter und dem callbackData-Parameter bietet die Möglichkeit, den laufenden Zeichenvorgang eines Bildes gemäß von Kriterien zu unterbrechen, die von der Anwendung bestimmt sind. Wenn eine Anwendung z. B. mit dem Zeichnen eines großen Bildes beginnt und der Benutzer einen Bildlauf ausführt, bei dem das Bild über die Begrenzungen des Bildschirms hinaus verschoben wird, bricht die Anwendung den Zeichenvorgang ab.

Das folgende Codebeispiel ist für die Verwendung mit Windows Forms vorgesehen und erfordert PaintEventArgse, wobei es sich um einen Parameter des PaPaint-Ereignishandlers handelt. Der Code definiert zuerst eine Rückrufmethode für den Graphics.DrawImageAbort-Delegaten. Die Definition ist einfach und prüft lediglich, ob ein Aufruf durch die DrawImage-Methode mit einem auf NULL festgelegten callBackData-Parameter durchgeführt wird. Der Hauptteil des Beispiels führt die folgenden Aktionen aus:

  • Erstellt eine Instanz der Graphics.DrawImageAbort-Rückrufmethode.

  • Erstellt ein Bild aus der JPEG-Datei SampImag.jpg im Beispielordner.

  • Erstellt Punkte, die ein Parallelogramm definieren, in dem das Bild gezeichnet werden soll.

  • Erstellt ein Rechteck, um den Bereich des Bildes auszuwählen, der gezeichnet werden soll.

  • Legt die Grafikzeicheneinheit auf Pixel fest.

  • Zeichnet das ursprüngliche Bild auf dem Bildschirm.

  • Erstellt ein zusätzliches Parallelogramm, in dem ein angepasstes Bild gezeichnet werden soll.

  • Erstellt die Attribute des angepassten Bildes und legt diese so fest, dass das Bild einen überdurchschnittlichen Gammawert aufweist.

  • Zeichnet das angepasste Bild auf dem Bildschirm.

Die Position des ursprünglichen, nicht angepassten Parallelogramms bestimmt die Position des Bildes auf dem Bildschirm, und die Größe des Rechtecks sowie die Größe und Form des Parallelogramms bestimmen die Skalierung und die Scherung des gezeichneten Bildes.

Da in diesem Beispiel eine Überladung mit Übergabe eines callBackData-Parameters verwendet wird, gibt der Graphics.DrawImageAbort-Rückruf false zurück, woraufhin die DrawImage-Methode fortgesetzt und das angepasste Bild auf dem Bildschirm gezeichnet wird.


// Define DrawImageAbort callback method.
private bool DrawImageCallback4(IntPtr callBackData)
{
             
    // Test for call that passes callBackData parameter.
    if(callBackData==IntPtr.Zero)
    {
             
        // If no callBackData passed, abort DrawImage method.
        return true;
    }
    else
    {
             
        // If callBackData passed, continue DrawImage method.
        return false;
    }
}
public void DrawImageParaFRectAttribAbortData(PaintEventArgs e)
{
             
    // Create callback method.
    Graphics.DrawImageAbort imageCallback
        = new Graphics.DrawImageAbort(DrawImageCallback4);
    int imageCallbackData = 1;
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create parallelogram for drawing original image.
    PointF ulCorner1 = new PointF(100.0F, 100.0F);
    PointF urCorner1 = new PointF(325.0F, 100.0F);
    PointF llCorner1 = new PointF(150.0F, 250.0F);
    PointF[] destPara1 = {ulCorner1, urCorner1, llCorner1};
             
    // Create rectangle for source image.
    RectangleF srcRect = new RectangleF(50.0F, 50.0F, 150.0F, 150.0F);
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Create parallelogram for drawing adjusted image.
    PointF ulCorner2 = new PointF(325.0F, 100.0F);
    PointF urCorner2 = new PointF(550.0F, 100.0F);
    PointF llCorner2 = new PointF(375.0F, 250.0F);
    PointF[] destPara2 = {ulCorner2, urCorner2, llCorner2};
             
    // Draw original image to screen.
    e.Graphics.DrawImage(newImage, destPara1, srcRect, units);
             
    // Create image attributes and set large gamma.
    ImageAttributes imageAttr = new ImageAttributes();
    imageAttr.SetGamma(4.0F);
    try
    {
        checked
        {
             
            // Draw adjusted image to screen.
            e.Graphics.DrawImage(
                newImage,
                destPara2,
                srcRect,
                units,
                imageAttr,
                imageCallback,
                imageCallbackData);
        }
    }
    catch (Exception ex)
    {
        e.Graphics.DrawString(
            ex.ToString(),
            new Font("Arial", 8),
            Brushes.Black,
            new PointF(0, 0));
    }
}

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0
Anzeigen: