Graphics.DrawImage 方法

定义

在指定位置并且按原始大小绘制指定的 ImageDraws the specified Image at the specified location and with the original size.

重载

DrawImage(Image, Single, Single, RectangleF, GraphicsUnit)

在指定的位置绘制图像的一部分。Draws a portion of an image at a specified location.

DrawImage(Image, Rectangle, Single, Single, Single, Single, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, IntPtr)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

DrawImage(Image, Rectangle, Int32, Int32, Int32, Int32, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, IntPtr)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

DrawImage(Image, Rectangle, Single, Single, Single, Single, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

DrawImage(Image, Rectangle, Int32, Int32, Int32, Int32, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

DrawImage(Image, Rectangle, Single, Single, Single, Single, GraphicsUnit, ImageAttributes)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

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

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

DrawImage(Image, Rectangle, Single, Single, Single, Single, GraphicsUnit)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

DrawImage(Image, Rectangle, Int32, Int32, Int32, Int32, GraphicsUnit)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

DrawImage(Image, PointF[], RectangleF, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, Int32)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

DrawImage(Image, Point[], Rectangle, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, Int32)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

DrawImage(Image, PointF[], RectangleF, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

DrawImage(Image, Point[], Rectangle, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

DrawImage(Image, Int32, Int32, Int32, Int32)

在指定位置并且按指定大小绘制指定的 ImageDraws the specified Image at the specified location and with the specified size.

DrawImage(Image, Single, Single, Single, Single)

在指定位置并且按指定大小绘制指定的 ImageDraws the specified Image at the specified location and with the specified size.

DrawImage(Image, PointF[], RectangleF, GraphicsUnit, ImageAttributes)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

DrawImage(Image, Point)

在指定的位置使用原始物理大小绘制指定的 ImageDraws the specified Image, using its original physical size, at the specified location.

DrawImage(Image, Point[])

在指定位置并且按指定形状和大小绘制指定的 ImageDraws the specified Image at the specified location and with the specified shape and size.

DrawImage(Image, PointF)

在指定的位置使用原始物理大小绘制指定的 ImageDraws the specified Image, using its original physical size, at the specified location.

DrawImage(Image, PointF[])

在指定位置并且按指定形状和大小绘制指定的 ImageDraws the specified Image at the specified location and with the specified shape and size.

DrawImage(Image, Rectangle)

在指定位置并且按指定大小绘制指定的 ImageDraws the specified Image at the specified location and with the specified size.

DrawImage(Image, RectangleF)

在指定位置并且按指定大小绘制指定的 ImageDraws the specified Image at the specified location and with the specified size.

DrawImage(Image, Int32, Int32)

在由坐标对指定的位置,使用图像的原始物理大小绘制指定的图像。Draws the specified image, using its original physical size, at the location specified by a coordinate pair.

DrawImage(Image, Int32, Int32, Rectangle, GraphicsUnit)

在指定的位置绘制图像的一部分。Draws a portion of an image at a specified location.

DrawImage(Image, Point[], Rectangle, GraphicsUnit)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

DrawImage(Image, PointF[], RectangleF, GraphicsUnit)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

DrawImage(Image, Rectangle, Rectangle, GraphicsUnit)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

DrawImage(Image, RectangleF, RectangleF, GraphicsUnit)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

DrawImage(Image, Single, Single)

在指定的位置使用原始物理大小绘制指定的 ImageDraws the specified Image, using its original physical size, at the specified location.

DrawImage(Image, Point[], Rectangle, GraphicsUnit, ImageAttributes)

在指定位置绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location.

DrawImage(Image, Single, Single, RectangleF, GraphicsUnit)

在指定的位置绘制图像的一部分。Draws a portion of an image at a specified location.

public:
 void DrawImage(System::Drawing::Image ^ image, float x, float y, System::Drawing::RectangleF srcRect, System::Drawing::GraphicsUnit srcUnit);
public void DrawImage (System.Drawing.Image image, float x, float y, System.Drawing.RectangleF srcRect, System.Drawing.GraphicsUnit srcUnit);
member this.DrawImage : System.Drawing.Image * single * single * System.Drawing.RectangleF * System.Drawing.GraphicsUnit -> unit

参数

image
Image

要绘制的 ImageImage to draw.

x
Single

所绘制图像的左上角的 x 坐标。The x-coordinate of the upper-left corner of the drawn image.

y
Single

所绘制图像的左上角的 y 坐标。The y-coordinate of the upper-left corner of the drawn image.

srcRect
RectangleF

RectangleF 结构,它指定 Image 中要绘制的部分。RectangleF structure that specifies the portion of the Image to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定 srcRect 参数所用的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used by the srcRect parameter.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建在其上绘制图像的左上角的坐标。Creates the coordinates at which to draw the upper-left corner of the image.

  • 创建要从中提取部分图像的源矩形。Creates a source rectangle from which to extract a portion of the image.

  • 将源矩形的度量单位设置为像素。Sets the unit of measure of the source rectangle to pixels.

  • 将图像绘制到屏幕上。Draws the image to the screen.

源矩形的大小决定将未缩放的原始图像的哪部分绘制到屏幕上。The size of the source rectangle determines what portion of the unscaled original image is drawn to the screen.

public:
   void DrawImage2FloatRectF( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create coordinates for upper-left corner of image.
      float x = 100.0F;
      float y = 100.0F;

      // Create rectangle for source image.
      RectangleF srcRect = RectangleF(50.0F,50.0F,150.0F,150.0F);
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, x, y, srcRect, units );
   }
public void DrawImage2FloatRectF(PaintEventArgs e)
{
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create coordinates for upper-left corner of image.
    float x = 100.0F;
    float y = 100.0F;
             
    // Create rectangle for source image.
    RectangleF srcRect = new RectangleF(50.0F, 50.0F, 150.0F, 150.0F);
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, x, y, srcRect, units);
}
Public Sub DrawImage2FloatRectF(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create coordinates for upper-left corner of image.
    Dim x As Single = 100.0F
    Dim y As Single = 100.0F

    ' Create rectangle for source image.
    Dim srcRect As New RectangleF(50.0F, 50.0F, 150.0F, 150.0F)
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, x, y, srcRect, units)
End Sub

注解

Image 存储像素宽度值和水平分辨率值(每英寸点数)。An Image stores a value for pixel width and a value for horizontal resolution (dots per inch). 图像的物理宽度(以英寸为单位)是像素宽度除以水平分辨率。The physical width, measured in inches, of an image is the pixel width divided by the horizontal resolution. 例如,像素宽度为360、水平分辨率为72点/英寸的图像的物理宽度为5英寸。For example, an image with a pixel width of 360 and a horizontal resolution of 72 dots per inch has a physical width of 5 inches. 类似的备注适用于像素高度和物理高度。Similar remarks apply to pixel height and physical height.

此方法使用其物理尺寸绘制图像的一部分,因此,无论显示设备的分辨率(每英寸点数)如何,图像部分的大小都将以英寸为单位。This method draws a portion of an image using its physical size, so the image portion will have its correct size in inches regardless of the resolution (dots per inch) of the display device. 例如,假设图像部分的像素宽度为216,水平分辨率为每英寸72点。For example, suppose an image portion has a pixel width of 216 and a horizontal resolution of 72 dots per inch. 如果调用此方法将图像部分绘制到分辨率为每英寸96点的设备上,则呈现的图像部分的像素宽度将为(216/72) * 96 = 288。If you call this method to draw that image portion on a device that has a resolution of 96 dots per inch, the pixel width of the rendered image portion will be (216/72)*96 = 288.

另请参阅

DrawImage(Image, Rectangle, Single, Single, Single, Single, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, IntPtr)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, System::Drawing::Rectangle destRect, float srcX, float srcY, float srcWidth, float srcHeight, System::Drawing::GraphicsUnit srcUnit, System::Drawing::Imaging::ImageAttributes ^ imageAttrs, System::Drawing::Graphics::DrawImageAbort ^ callback, IntPtr callbackData);
public void DrawImage (System.Drawing.Image image, System.Drawing.Rectangle destRect, float srcX, float srcY, float srcWidth, float srcHeight, System.Drawing.GraphicsUnit srcUnit, System.Drawing.Imaging.ImageAttributes imageAttrs, System.Drawing.Graphics.DrawImageAbort callback, IntPtr callbackData);
member this.DrawImage : System.Drawing.Image * System.Drawing.Rectangle * single * single * single * single * System.Drawing.GraphicsUnit * System.Drawing.Imaging.ImageAttributes * System.Drawing.Graphics.DrawImageAbort * nativeint -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destRect
Rectangle

Rectangle 结构,它指定所绘制图像的位置和大小。Rectangle structure that specifies the location and size of the drawn image. 将图像进行缩放以适合该矩形。The image is scaled to fit the rectangle.

srcX
Single

要绘制的源图像部分的左上角的 x 坐标。The x-coordinate of the upper-left corner of the portion of the source image to draw.

srcY
Single

要绘制的源图像部分的左上角的 y 坐标。The y-coordinate of the upper-left corner of the portion of the source image to draw.

srcWidth
Single

要绘制的源图像部分的宽度。Width of the portion of the source image to draw.

srcHeight
Single

要绘制的源图像部分的高度。Height of the portion of the source image to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定用于确定源矩形的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used to determine the source rectangle.

imageAttrs
ImageAttributes

ImageAttributes,它指定 image 对象的重新着色和伽玛信息。ImageAttributes that specifies recoloring and gamma information for the image object.

callback
Graphics.DrawImageAbort

Graphics.DrawImageAbort 委托,它指定在绘制图像期间要调用的方法。Graphics.DrawImageAbort delegate that specifies a method to call during the drawing of the image. 此方法被频繁调用以检查是否根据应用程序确定的条件停止 DrawImage(Image, Rectangle, Single, Single, Single, Single, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, IntPtr) 方法的执行。This method is called frequently to check whether to stop execution of the DrawImage(Image, Rectangle, Single, Single, Single, Single, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, IntPtr) method according to application-determined criteria.

callbackData
IntPtr

一个值,它为 Graphics.DrawImageAbort 委托指定在检查是否停止执行 DrawImage 方法时要使用的附加数据。Value specifying additional data for the Graphics.DrawImageAbort delegate to use when checking whether to stop execution of the DrawImage method.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 代码首先为 Graphics.DrawImageAbort 委托定义回调方法;定义是简化的,仅测试 DrawImage 方法是否使用 null callBackData 参数调用该定义。The code first defines a callback method for the Graphics.DrawImageAbort delegate; the definition is simplistic and merely tests to see whether the DrawImage method calls it with a null callBackData parameter. 示例的主体执行以下操作:The main body of the example performs the following actions:

  • 创建 Graphics.DrawImageAbort 回调方法的实例。Creates an instance of the Graphics.DrawImageAbort callback method.

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建定义要在其中绘制图像的目标矩形的点。Creates points that define a destination rectangle in which to draw the image.

  • 创建源矩形以选择要绘制的图像部分。Creates a source rectangle to select the portion of the image to draw.

  • 将图形绘图单位设置为像素。Sets the graphics drawing unit to pixel.

  • 将原始图像绘制到屏幕上。Draws the original image to the screen.

  • 创建一个要在其中绘制调整后的图像的附加目标矩形。Creates an additional destination rectangle in which to draw an adjusted image.

  • 创建并设置调整后的图像的属性,使其具有比平时更大的伽玛值。Creates and sets the attributes of the adjusted image to have a larger-than-usual gamma value.

  • 在屏幕上绘制调整后的图像。Draws the adjusted image to the screen.

对于原始的 unadjusted 目标矩形,位置在屏幕上定位图像,源矩形的大小和目标矩形的大小和形状决定了所绘制图像的缩放。For the original, unadjusted destination rectangle, the position locates the image on the screen, and the size of the source rectangle and the size and shape of the destination rectangle determines the scaling of the drawn image.

由于此示例使用传递了一个 callBackData 参数的重载,因此 Graphics.DrawImageAbort 回调返回 false,这将导致 DrawImage 方法继续,此示例将调整后的图像绘制到屏幕上。Because this example uses an overload that passes a callBackData parameter, the Graphics.DrawImageAbort callback returns false, which causes the DrawImage method to continue, and the example draws the adjusted image to the screen.

   // Define DrawImageAbort callback method.
private:
   bool DrawImageCallback8( 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 DrawImageRect4FloatAttribAbortData( PaintEventArgs^ e )
   {
      // Create callback method.
      Graphics::DrawImageAbort^ imageCallback = gcnew Graphics::DrawImageAbort( this, &Form1::DrawImageCallback8 );
      IntPtr imageCallbackData = IntPtr(1);

      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create rectangle for displaying original image.
      Rectangle destRect1 = Rectangle(100,25,450,150);

      // Create coordinates of rectangle for source image.
      float x = 50.0F;
      float y = 50.0F;
      float width = 150.0F;
      float height = 150.0F;
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Draw original image to screen.
      e->Graphics->DrawImage( newImage, destRect1, x, y, width, height, units );

      // Create rectangle for adjusted image.
      Rectangle destRect2 = Rectangle(100,175,450,150);

      // Create image attributes and set large gamma.
      ImageAttributes^ imageAttr = gcnew ImageAttributes;
      imageAttr->SetGamma( 4.0F );

      // Draw adjusted image to screen.
      try
      {
         // Draw adjusted image to screen.
         e->Graphics->DrawImage( newImage, destRect2, x, y, width, height, units, imageAttr, imageCallback, imageCallbackData );
      }
      catch ( Exception^ ex ) 
      {
         e->Graphics->DrawString( ex->ToString(), gcnew System::Drawing::Font( "Arial",8 ), Brushes::Black, PointF(0,0) );
      }
   }

// Define DrawImageAbort callback method.
private bool DrawImageCallback8(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 DrawImageRect4FloatAttribAbortData(PaintEventArgs e)
{
             
    // Create callback method.
    Graphics.DrawImageAbort imageCallback
        = new Graphics.DrawImageAbort(DrawImageCallback8);
    IntPtr imageCallbackData = new IntPtr(1);
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create rectangle for displaying original image.
    Rectangle destRect1 = new Rectangle(100, 25, 450, 150);
             
    // Create coordinates of rectangle for source image.
    float x = 50.0F;
    float y = 50.0F;
    float width = 150.0F;
    float height = 150.0F;
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw original image to screen.
    e.Graphics.DrawImage(newImage, destRect1, x, y, width, height, units);
             
    // Create rectangle for adjusted image.
    Rectangle destRect2 = new Rectangle(100, 175, 450, 150);
             
    // Create image attributes and set large gamma.
    ImageAttributes imageAttr = new ImageAttributes();
    imageAttr.SetGamma(4.0F);
             
    // Draw adjusted image to screen.
    try
    {
        checked
        {
             
            // Draw adjusted image to screen.
            e.Graphics.DrawImage(
                newImage,
                destRect2,
                x, y,
                width, height,
                units,
                imageAttr,
                imageCallback,
                imageCallbackData);
        }
    }
    catch (Exception ex)
    {
        e.Graphics.DrawString(
            ex.ToString(),
            new Font("Arial", 8),
            Brushes.Black,
            new PointF(0, 0));
    }
}
Private Function DrawImageCallback8(ByVal callBackData As IntPtr) As Boolean

    ' Test for call that passes callBackData parameter.
    If callBackData.Equals(IntPtr.Zero) Then

        ' If no callBackData passed, abort DrawImage method.
        Return True
    Else

        ' If callBackData passed, continue DrawImage method.
        Return False
    End If
End Function
Public Sub DrawImageRect4FloatAttribAbortData(ByVal e As PaintEventArgs)

    ' Create callback method.
    Dim imageCallback As New _
    Graphics.DrawImageAbort(AddressOf DrawImageCallback8)
    Dim imageCallbackData As New IntPtr(1)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create rectangle for displaying original image.
    Dim destRect1 As New Rectangle(100, 25, 450, 150)

    ' Create coordinates of rectangle for source image.
    Dim x As Single = 50.0F
    Dim y As Single = 50.0F
    Dim width As Single = 150.0F
    Dim height As Single = 150.0F
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw original image to screen.
    e.Graphics.DrawImage(newImage, destRect1, x, y, width, _
    height, units)

    ' Create rectangle for adjusted image.
    Dim destRect2 As New Rectangle(100, 175, 450, 150)

    ' Create image attributes and set large gamma.
    Dim imageAttr As New ImageAttributes
    imageAttr.SetGamma(4.0F)

    ' Draw adjusted image to screen.
    Try

        ' Draw adjusted image to screen.
        e.Graphics.DrawImage(newImage, destRect2, x, y, width, _
        height, units, imageAttr, imageCallback, imageCallbackData)
    Catch ex As Exception
        e.Graphics.DrawString(ex.ToString(), New Font("Arial", 8), _
        Brushes.Black, New PointF(0, 0))
    End Try
End Sub

注解

srcXsrcYsrcWidthsrcHeight 参数指定要绘制的 image 对象的矩形部分。The srcX, srcY, srcWidth, and srcHeight parameters specify a rectangular portion, of the image object to draw. 该矩形相对于源图像的左上角。The rectangle is relative to the upper-left corner of the source image. 调整此部分以容纳 destRect 参数所指定的矩形内。This portion is scaled to fit inside the rectangle specified by the destRect parameter.

使用 callbackcallbackData 参数的此重载可提供一种方法,用于在根据应用程序确定的条件和数据开始后停止绘制图像。This overload with the callback and callbackData parameters provides the means to stop the drawing of an image once it starts according to criteria and data determined by the application. 例如,应用程序可以开始绘制大图像,用户可能会在屏幕上滚动图像,在这种情况下,应用程序可以停止绘图。For example, an application could start drawing a large image and the user might scroll the image off the screen, in which case the application could stop the drawing.

另请参阅

DrawImage(Image, Rectangle, Int32, Int32, Int32, Int32, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, IntPtr)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

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);
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);
member this.DrawImage : System.Drawing.Image * System.Drawing.Rectangle * int * int * int * int * System.Drawing.GraphicsUnit * System.Drawing.Imaging.ImageAttributes * System.Drawing.Graphics.DrawImageAbort * nativeint -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destRect
Rectangle

Rectangle 结构,它指定所绘制图像的位置和大小。Rectangle structure that specifies the location and size of the drawn image. 将图像进行缩放以适合该矩形。The image is scaled to fit the rectangle.

srcX
Int32

要绘制的源图像部分的左上角的 x 坐标。The x-coordinate of the upper-left corner of the portion of the source image to draw.

srcY
Int32

要绘制的源图像部分的左上角的 y 坐标。The y-coordinate of the upper-left corner of the portion of the source image to draw.

srcWidth
Int32

要绘制的源图像部分的宽度。Width of the portion of the source image to draw.

srcHeight
Int32

要绘制的源图像部分的高度。Height of the portion of the source image to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定用于确定源矩形的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used to determine the source rectangle.

imageAttrs
ImageAttributes

ImageAttributes,它指定 image 对象的重新着色和伽玛信息。ImageAttributes that specifies recoloring and gamma information for the image object.

callback
Graphics.DrawImageAbort

Graphics.DrawImageAbort 委托,它指定在绘制图像期间要调用的方法。Graphics.DrawImageAbort delegate that specifies a method to call during the drawing of the image. 此方法被频繁调用以检查是否根据应用程序确定的条件停止 DrawImage(Image, Rectangle, Int32, Int32, Int32, Int32, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, IntPtr) 方法的执行。This method is called frequently to check whether to stop execution of the DrawImage(Image, Rectangle, Int32, Int32, Int32, Int32, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, IntPtr) method according to application-determined criteria.

callbackData
IntPtr

一个值,它为 Graphics.DrawImageAbort 委托指定在检查是否停止执行 DrawImage 方法时要使用的附加数据。Value specifying additional data for the Graphics.DrawImageAbort delegate to use when checking whether to stop execution of the DrawImage method.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 代码首先为 Graphics.DrawImageAbort 委托定义回调方法;定义是简化的,仅测试 DrawImage 方法是否使用 null callBackData 参数调用该定义。The code first defines a callback method for the Graphics.DrawImageAbort delegate; the definition is simplistic and merely tests to see whether the DrawImage method calls it with a null callBackData parameter. 示例的主体执行以下操作:The main body of the example performs the following actions:

  • 创建 Graphics.DrawImageAbort 回调方法的实例。Creates an instance of the Graphics.DrawImageAbort callback method.

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建定义要在其中绘制图像的目标矩形的点。Creates points that define a destination rectangle in which to draw the image.

  • 创建源矩形以选择要绘制的图像部分。Creates a source rectangle to select the portion of the image to draw.

  • 将图形绘图单位设置为像素。Sets the graphics drawing unit to pixel.

  • 将原始图像绘制到屏幕上。Draws the original image to the screen.

  • 创建一个要在其中绘制调整后的图像的附加目标矩形。Creates an additional destination rectangle in which to draw an adjusted image.

  • 创建并设置调整后的图像的属性,使其具有比平时更大的伽玛值。Creates and sets the attributes of the adjusted image to have a larger-than-usual gamma value.

  • 在屏幕上绘制调整后的图像。Draws the adjusted image to the screen.

对于原始的 unadjusted 目标矩形,位置在屏幕上定位图像,源矩形的大小和目标矩形的大小和形状决定了所绘制图像的缩放。For the original, unadjusted destination rectangle, the position locates the image on the screen, and the size of the source rectangle and the size and shape of the destination rectangle determines the scaling of the drawn image.

由于此示例使用传递了一个 callBackData 参数的重载,因此 Graphics.DrawImageAbort 回调返回 false,这将导致 DrawImage 方法继续,此示例将调整后的图像绘制到屏幕上。Because this example uses an overload that passes a callBackData parameter, the Graphics.DrawImageAbort callback returns false, which causes the DrawImage method to continue, and the example draws the adjusted image to the screen.

   // Define DrawImageAbort callback method.
private:
   bool DrawImageCallback6( 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;
      }
   }

private:
   void DrawImageRect4IntAtrribAbortData( PaintEventArgs^ e )
   {
      // Create callback method.
      Graphics::DrawImageAbort^ imageCallback = gcnew Graphics::DrawImageAbort( this, &Form1::DrawImageCallback6 );
      IntPtr imageCallbackData = IntPtr(1);

      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create rectangle for displaying original image.
      Rectangle destRect1 = Rectangle(100,25,450,150);

      // Create coordinates of rectangle for source image.
      int x = 50;
      int y = 50;
      int width = 150;
      int height = 150;
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Draw original image to screen.
      e->Graphics->DrawImage( newImage, destRect1, x, y, width, height, units );

      // Create rectangle for adjusted image.
      Rectangle destRect2 = Rectangle(100,175,450,150);

      // Create image attributes and set large gamma.
      ImageAttributes^ imageAttr = gcnew ImageAttributes;
      imageAttr->SetGamma( 4.0F );
      try
      {
         // Draw adjusted image to screen.
         e->Graphics->DrawImage( newImage, destRect2, x, y, width, height, units, imageAttr, imageCallback, imageCallbackData );
      }
      catch ( Exception^ ex ) 
      {
         e->Graphics->DrawString( ex->ToString(), gcnew System::Drawing::Font( "Arial",8 ), Brushes::Black, PointF(0,0) );
      }
   }

// Define DrawImageAbort callback method.
private bool DrawImageCallback6(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;
    }
}
private void DrawImageRect4IntAtrribAbortData(PaintEventArgs e)
{
             
    // Create callback method.
    Graphics.DrawImageAbort imageCallback
        = new Graphics.DrawImageAbort(DrawImageCallback6);
    IntPtr imageCallbackData = new IntPtr(1);
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create rectangle for displaying original image.
    Rectangle destRect1 = new Rectangle(100, 25, 450, 150);
             
    // Create coordinates of rectangle for source image.
    int x = 50;
    int y = 50;
    int width = 150;
    int height = 150;
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw original image to screen.
    e.Graphics.DrawImage(newImage, destRect1, x, y, width, height, units);
             
    // Create rectangle for adjusted image.
    Rectangle destRect2 = new Rectangle(100, 175, 450, 150);
             
    // 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,
                destRect2,
                x, y,
                width, height,
                units,
                imageAttr,
                imageCallback,
                imageCallbackData);
        }
    }
    catch (Exception ex)
    {
        e.Graphics.DrawString(
            ex.ToString(),
            new Font("Arial", 8),
            Brushes.Black,
            new PointF(0, 0));
    }
}
Private Function DrawImageCallback6(ByVal callBackData As IntPtr) As Boolean

    ' Test for call that passes callBackData parameter.
    If callBackData.Equals(IntPtr.Zero) Then

        ' If no callBackData passed, abort DrawImage method.
        Return True
    Else

        ' If callBackData passed, continue DrawImage method.
        Return False
    End If
End Function
Private Sub DrawImageRect4IntAtrribAbortData(ByVal e As PaintEventArgs)

    ' Create callback method.
    Dim imageCallback As New _
    Graphics.DrawImageAbort(AddressOf DrawImageCallback6)
    Dim imageCallbackData As New IntPtr(1)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create rectangle for displaying original image.
    Dim destRect1 As New Rectangle(100, 25, 450, 150)

    ' Create coordinates of rectangle for source image.
    Dim x As Integer = 50
    Dim y As Integer = 50
    Dim width As Integer = 150
    Dim height As Integer = 150
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw original image to screen.
    e.Graphics.DrawImage(newImage, destRect1, x, y, width, height, _
    units)

    ' Create rectangle for adjusted image.
    Dim destRect2 As New Rectangle(100, 175, 450, 150)

    ' Create image attributes and set large gamma.
    Dim imageAttr As New ImageAttributes
    imageAttr.SetGamma(4.0F)
    Try

        ' Draw adjusted image to screen.
        e.Graphics.DrawImage(newImage, destRect2, x, y, width, _
        height, units, imageAttr, imageCallback, imageCallbackData)
    Catch ex As Exception
        e.Graphics.DrawString(ex.ToString(), New Font("Arial", 8), _
        Brushes.Black, New PointF(0, 0))
    End Try
End Sub

注解

srcXsrcYsrcWidthsrcHeight 参数指定要绘制的 image 对象的矩形部分。The srcX, srcY, srcWidth, and srcHeight parameters specify a rectangular portion, of the image object to draw. 该矩形相对于源图像的左上角。The rectangle is relative to the upper-left corner of the source image. 调整此部分以容纳 destRect 参数所指定的矩形内。This portion is scaled to fit inside the rectangle specified by the destRect parameter.

使用 callbackcallbackData 参数的此重载可提供一种方法,用于在根据应用程序确定的条件和数据开始后停止绘制图像。This overload with the callback and callbackData parameters provides the means to stop the drawing of an image once it starts according to criteria and data determined by the application. 例如,应用程序可以开始绘制大图像,用户可能会在屏幕上滚动图像,在这种情况下,应用程序可以停止绘图。For example, an application could start drawing a large image and the user might scroll the image off the screen, in which case the application could stop the drawing.

另请参阅

DrawImage(Image, Rectangle, Single, Single, Single, Single, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, System::Drawing::Rectangle destRect, float srcX, float srcY, float srcWidth, float srcHeight, System::Drawing::GraphicsUnit srcUnit, System::Drawing::Imaging::ImageAttributes ^ imageAttrs, System::Drawing::Graphics::DrawImageAbort ^ callback);
public void DrawImage (System.Drawing.Image image, System.Drawing.Rectangle destRect, float srcX, float srcY, float srcWidth, float srcHeight, System.Drawing.GraphicsUnit srcUnit, System.Drawing.Imaging.ImageAttributes imageAttrs, System.Drawing.Graphics.DrawImageAbort callback);
member this.DrawImage : System.Drawing.Image * System.Drawing.Rectangle * single * single * single * single * System.Drawing.GraphicsUnit * System.Drawing.Imaging.ImageAttributes * System.Drawing.Graphics.DrawImageAbort -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destRect
Rectangle

Rectangle 结构,它指定所绘制图像的位置和大小。Rectangle structure that specifies the location and size of the drawn image. 将图像进行缩放以适合该矩形。The image is scaled to fit the rectangle.

srcX
Single

要绘制的源图像部分的左上角的 x 坐标。The x-coordinate of the upper-left corner of the portion of the source image to draw.

srcY
Single

要绘制的源图像部分的左上角的 y 坐标。The y-coordinate of the upper-left corner of the portion of the source image to draw.

srcWidth
Single

要绘制的源图像部分的宽度。Width of the portion of the source image to draw.

srcHeight
Single

要绘制的源图像部分的高度。Height of the portion of the source image to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定用于确定源矩形的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used to determine the source rectangle.

imageAttrs
ImageAttributes

ImageAttributes,它指定 image 对象的重新着色和伽玛信息。ImageAttributes that specifies recoloring and gamma information for the image object.

callback
Graphics.DrawImageAbort

Graphics.DrawImageAbort 委托,它指定在绘制图像期间要调用的方法。Graphics.DrawImageAbort delegate that specifies a method to call during the drawing of the image. 此方法被频繁调用以检查是否根据应用程序确定的条件停止 DrawImage(Image, Rectangle, Single, Single, Single, Single, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort) 方法的执行。This method is called frequently to check whether to stop execution of the DrawImage(Image, Rectangle, Single, Single, Single, Single, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort) method according to application-determined criteria.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 代码首先为 Graphics.DrawImageAbort 委托定义回调方法;定义是简化的,仅测试 DrawImage 方法是否使用 null callBackData 参数调用该定义。The code first defines a callback method for the Graphics.DrawImageAbort delegate; the definition is simplistic and merely tests to see whether the DrawImage method calls it with a null callBackData parameter. 示例的主体执行以下操作:The main body of the example performs the following actions:

  • 创建 Graphics.DrawImageAbort 回调方法的实例。Creates an instance of the Graphics.DrawImageAbort callback method.

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建定义要在其中绘制图像的目标矩形的点。Creates points that define a destination rectangle in which to draw the image.

  • 创建源矩形以选择要绘制的图像部分。Creates a source rectangle to select the portion of the image to draw.

  • 将图形绘图单位设置为像素。Sets the graphics drawing unit to pixel.

  • 将原始图像绘制到屏幕上。Draws the original image to the screen.

  • 创建一个要在其中绘制调整后的图像的附加目标矩形。Creates an additional destination rectangle in which to draw an adjusted image.

  • 创建并设置调整后的图像的属性,使其具有比平时更大的伽玛值。Creates and sets the attributes of the adjusted image to have a larger-than-usual gamma value.

  • 在屏幕上绘制调整后的图像。Draws the adjusted image to the screen.

对于原始的 unadjusted 目标矩形,位置在屏幕上定位图像,源矩形的大小和目标矩形的大小和形状决定了所绘制图像的缩放。For the original, unadjusted destination rectangle, the position locates the image on the screen, and the size of the source rectangle and the size and shape of the destination rectangle determines the scaling of the drawn image.

由于此示例使用不传递 callBackData 参数的重载,因此 Graphics.DrawImageAbort 回调返回 true,这将导致 DrawImage 方法结束,并且该示例中包含的异常处理代码输出异常文本,而不是绘制图像。Because this example uses an overload that does not pass a callBackData parameter, the Graphics.DrawImageAbort callback returns true, which causes the DrawImage method to end, and the exception-handling code included in the example prints out the exception text rather than drawing the image.

   // Define DrawImageAbort callback method.
private:
   bool DrawImageCallback7( 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;
      }
   }

private:
   void DrawImageRect4FloatAttribAbort( PaintEventArgs^ e )
   {
      // Create callback method.
      Graphics::DrawImageAbort^ imageCallback = gcnew Graphics::DrawImageAbort( this, &Form1::DrawImageCallback7 );

      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create rectangle for displaying original image.
      Rectangle destRect1 = Rectangle(100,25,450,150);

      // Create coordinates of rectangle for source image.
      float x = 50.0F;
      float y = 50.0F;
      float width = 150.0F;
      float height = 150.0F;
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Draw original image to screen.
      e->Graphics->DrawImage( newImage, destRect1, x, y, width, height, units );

      // Create rectangle for adjusted image.
      Rectangle destRect2 = Rectangle(100,175,450,150);

      // Create image attributes and set large gamma.
      ImageAttributes^ imageAttr = gcnew ImageAttributes;
      imageAttr->SetGamma( 4.0F );
      try
      {
         // Draw adjusted image to screen.
         e->Graphics->DrawImage( newImage, destRect2, x, y, width, height, units, imageAttr, imageCallback );
      }
      catch ( Exception^ ex ) 
      {
         e->Graphics->DrawString( ex->ToString(), gcnew System::Drawing::Font( "Arial",8 ), Brushes::Black, PointF(0,0) );
      }
   }

// Define DrawImageAbort callback method.
private bool DrawImageCallback7(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;
    }
}
private void DrawImageRect4FloatAttribAbort(PaintEventArgs e)
{
             
    // Create callback method.
    Graphics.DrawImageAbort imageCallback
        = new Graphics.DrawImageAbort(DrawImageCallback7);
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create rectangle for displaying original image.
    Rectangle destRect1 = new Rectangle(100, 25, 450, 150);
             
    // Create coordinates of rectangle for source image.
    float x = 50.0F;
    float y = 50.0F;
    float width = 150.0F;
    float height = 150.0F;
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw original image to screen.
    e.Graphics.DrawImage(newImage, destRect1, x, y, width, height, units);
             
    // Create rectangle for adjusted image.
    Rectangle destRect2 = new Rectangle(100, 175, 450, 150);
             
    // 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,
                destRect2,
                x, y,
                width, height,
                units,
                imageAttr,
                imageCallback);
        }
    }
    catch (Exception ex)
    {
        e.Graphics.DrawString(
            ex.ToString(),
            new Font("Arial", 8),
            Brushes.Black,
            new PointF(0, 0));
    }
}
Private Function DrawImageCallback7(ByVal callBackData As IntPtr) As Boolean

    ' Test for call that passes callBackData parameter.
    If callBackData.Equals(IntPtr.Zero) Then

        ' If no callBackData passed, abort DrawImage method.
        Return True
    Else

        ' If callBackData passed, continue DrawImage method.
        Return False
    End If
End Function
Private Sub DrawImageRect4FloatAttribAbort(ByVal e As PaintEventArgs)

    ' Create callback method.
    Dim imageCallback As New _
    Graphics.DrawImageAbort(AddressOf DrawImageCallback7)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create rectangle for displaying original image.
    Dim destRect1 As New Rectangle(100, 25, 450, 150)

    ' Create coordinates of rectangle for source image.
    Dim x As Single = 50.0F
    Dim y As Single = 50.0F
    Dim width As Single = 150.0F
    Dim height As Single = 150.0F
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw original image to screen.
    e.Graphics.DrawImage(newImage, destRect1, x, y, width, _
    height, units)

    ' Create rectangle for adjusted image.
    Dim destRect2 As New Rectangle(100, 175, 450, 150)

    ' Create image attributes and set large gamma.
    Dim imageAttr As New ImageAttributes
    imageAttr.SetGamma(4.0F)
    Try

        ' Draw adjusted image to screen.
        e.Graphics.DrawImage(newImage, destRect2, x, y, width, _
        height, units, imageAttr, imageCallback)
    Catch ex As Exception
        e.Graphics.DrawString(ex.ToString(), New Font("Arial", 8), _
        Brushes.Black, New PointF(0, 0))
    End Try
End Sub

注解

srcXsrcYsrcWidthsrcHeight 参数指定要绘制的 image 对象的矩形部分。The srcX, srcY, srcWidth, and srcHeight parameters specify a rectangular portion, of the image object to draw. 该矩形相对于源图像的左上角。The rectangle is relative to the upper-left corner of the source image. 调整此部分以容纳 destRect 参数所指定的矩形内。This portion is scaled to fit inside the rectangle specified by the destRect parameter.

此重载与 callback 参数提供了一种方法,用于在根据应用程序确定的条件开始后停止绘制图像。This overload with the callback parameter provides the means to stop the drawing of an image once it starts according to criteria determined by the application. 例如,应用程序可以开始绘制大图像,用户可能会在屏幕上滚动图像,在这种情况下,应用程序可以停止绘图。For example, an application could start drawing a large image and the user might scroll the image off the screen, in which case the application could stop the drawing.

另请参阅

DrawImage(Image, Rectangle, Int32, Int32, Int32, Int32, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

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 ^ imageAttr, System::Drawing::Graphics::DrawImageAbort ^ callback);
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 imageAttr, System.Drawing.Graphics.DrawImageAbort callback);
member this.DrawImage : System.Drawing.Image * System.Drawing.Rectangle * int * int * int * int * System.Drawing.GraphicsUnit * System.Drawing.Imaging.ImageAttributes * System.Drawing.Graphics.DrawImageAbort -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destRect
Rectangle

Rectangle 结构,它指定所绘制图像的位置和大小。Rectangle structure that specifies the location and size of the drawn image. 将图像进行缩放以适合该矩形。The image is scaled to fit the rectangle.

srcX
Int32

要绘制的源图像部分的左上角的 x 坐标。The x-coordinate of the upper-left corner of the portion of the source image to draw.

srcY
Int32

要绘制的源图像部分的左上角的 y 坐标。The y-coordinate of the upper-left corner of the portion of the source image to draw.

srcWidth
Int32

要绘制的源图像部分的宽度。Width of the portion of the source image to draw.

srcHeight
Int32

要绘制的源图像部分的高度。Height of the portion of the source image to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定用于确定源矩形的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used to determine the source rectangle.

imageAttr
ImageAttributes

ImageAttributes,它指定 image 的重新着色和伽玛信息。ImageAttributes that specifies recoloring and gamma information for image.

callback
Graphics.DrawImageAbort

Graphics.DrawImageAbort 委托,它指定在绘制图像期间要调用的方法。Graphics.DrawImageAbort delegate that specifies a method to call during the drawing of the image. 此方法被频繁调用以检查是否根据应用程序确定的条件停止 DrawImage(Image, Rectangle, Int32, Int32, Int32, Int32, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort) 方法的执行。This method is called frequently to check whether to stop execution of the DrawImage(Image, Rectangle, Int32, Int32, Int32, Int32, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort) method according to application-determined criteria.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 代码首先为 Graphics.DrawImageAbort 委托定义回调方法;定义是简化的,仅测试 DrawImage 方法是否使用 null callBackData 参数调用该定义。The code first defines a callback method for the Graphics.DrawImageAbort delegate; the definition is simplistic and merely tests to see whether the DrawImage method calls it with a null callBackData parameter. 示例的主体执行以下操作:The main body of the example performs the following actions:

  • 创建 Graphics.DrawImageAbort 回调方法的实例。Creates an instance of the Graphics.DrawImageAbort callback method.

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建定义要在其中绘制图像的目标矩形的点。Creates points that define a destination rectangle in which to draw the image.

  • 创建源矩形以选择要绘制的图像部分。Creates a source rectangle to select the portion of the image to draw.

  • 将图形绘图单位设置为像素。Sets the graphics drawing unit to pixel.

  • 将原始图像绘制到屏幕上。Draws the original image to the screen.

  • 创建一个要在其中绘制调整后的图像的附加目标矩形。Creates an additional destination rectangle in which to draw an adjusted image.

  • 创建并设置调整后的图像的属性,使其具有比平时更大的伽玛值。Creates and sets the attributes of the adjusted image to have a larger-than-usual gamma value.

  • 在屏幕上绘制调整后的图像。Draws the adjusted image to the screen.

对于原始的 unadjusted 目标矩形,位置在屏幕上定位图像,源矩形的大小和目标矩形的大小和形状决定了所绘制图像的缩放。For the original, unadjusted destination rectangle, the position locates the image on the screen, and the size of the source rectangle and the size and shape of the destination rectangle determines the scaling of the drawn image.

由于此示例使用不传递 callBackData 参数的重载,因此 Graphics.DrawImageAbort 回调返回 true,这将导致 DrawImage 方法结束,并且该示例中包含的异常处理代码输出异常文本,而不是绘制图像。Because this example uses an overload that does not pass a callBackData parameter, the Graphics.DrawImageAbort callback returns true, which causes the DrawImage method to end, and the exception-handling code included in the example prints out the exception text rather than drawing the image.

   // Define DrawImageAbort callback method.
private:
   bool DrawImageCallback5( 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;
      }
   }

private:
   void DrawImageRect4IntAtrribAbort( PaintEventArgs^ e )
   {
      // Create callback method.
      Graphics::DrawImageAbort^ imageCallback = gcnew Graphics::DrawImageAbort( this, &Form1::DrawImageCallback5 );

      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create rectangle for displaying original image.
      Rectangle destRect1 = Rectangle(100,25,450,150);

      // Create coordinates of rectangle for source image.
      int x = 50;
      int y = 50;
      int width = 150;
      int height = 150;
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Draw original image to screen.
      e->Graphics->DrawImage( newImage, destRect1, x, y, width, height, units );

      // Create rectangle for adjusted image.
      Rectangle destRect2 = Rectangle(100,175,450,150);

      // Create image attributes and set large gamma.
      ImageAttributes^ imageAttr = gcnew ImageAttributes;
      imageAttr->SetGamma( 4.0F );
      try
      {
         // Draw adjusted image to screen.
         e->Graphics->DrawImage( newImage, destRect2, x, y, width, height, units, imageAttr, imageCallback );
      }
      catch ( Exception^ ex ) 
      {
         e->Graphics->DrawString( ex->ToString(), gcnew System::Drawing::Font( "Arial",8 ), Brushes::Black, PointF(0,0) );
      }
   }

// Define DrawImageAbort callback method.
private bool DrawImageCallback5(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;
    }
}
private void DrawImageRect4IntAtrribAbort(PaintEventArgs e)
{
             
    // Create callback method.
    Graphics.DrawImageAbort imageCallback
        = new Graphics.DrawImageAbort(DrawImageCallback5);
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create rectangle for displaying original image.
    Rectangle destRect1 = new Rectangle(100, 25, 450, 150);
             
    // Create coordinates of rectangle for source image.
    int x = 50;
    int y = 50;
    int width = 150;
    int height = 150;
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw original image to screen.
    e.Graphics.DrawImage(newImage, destRect1, x, y, width, height, units);
             
    // Create rectangle for adjusted image.
    Rectangle destRect2 = new Rectangle(100, 175, 450, 150);
             
    // 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,
                destRect2,
                x, y,
                width, height,
                units,
                imageAttr,
                imageCallback);
        }
    }
    catch (Exception ex)
    {
        e.Graphics.DrawString(
            ex.ToString(),
            new Font("Arial", 8),
            Brushes.Black,
            new PointF(0, 0));
    }
}
Private Function DrawImageCallback5(ByVal callBackData As IntPtr) As Boolean

    ' Test for call that passes callBackData parameter.
    If callBackData.Equals(IntPtr.Zero) Then

        ' If no callBackData passed, abort DrawImage method.
        Return True
    Else

        ' If callBackData passed, continue DrawImage method.
        Return False
    End If
End Function
Private Sub DrawImageRect4IntAtrribAbort(ByVal e As PaintEventArgs)

    ' Create callback method.
    Dim imageCallback As New _
    Graphics.DrawImageAbort(AddressOf DrawImageCallback5)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create rectangle for displaying original image.
    Dim destRect1 As New Rectangle(100, 25, 450, 150)

    ' Create coordinates of rectangle for source image.
    Dim x As Integer = 50
    Dim y As Integer = 50
    Dim width As Integer = 150
    Dim height As Integer = 150
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw original image to screen.
    e.Graphics.DrawImage(newImage, destRect1, x, y, width, height, _
    units)

    ' Create rectangle for adjusted image.
    Dim destRect2 As New Rectangle(100, 175, 450, 150)

    ' Create image attributes and set large gamma.
    Dim imageAttr As New ImageAttributes
    imageAttr.SetGamma(4.0F)
    Try

        ' Draw adjusted image to screen.
        e.Graphics.DrawImage(newImage, destRect2, x, y, width, _
        height, units, imageAttr, imageCallback)
    Catch ex As Exception
        e.Graphics.DrawString(ex.ToString(), New Font("Arial", 8), _
        Brushes.Black, New PointF(0, 0))
    End Try
End Sub

注解

srcXsrcYsrcWidthsrcHeight 参数指定要绘制的 image 对象的矩形部分。The srcX, srcY, srcWidth, and srcHeight parameters specify a rectangular portion, of the image object to draw. 该矩形相对于源图像的左上角。The rectangle is relative to the upper-left corner of the source image. 调整此部分以容纳 destRect 对象指定的矩形内。This portion is scaled to fit inside the rectangle specified by the destRect object.

此重载与 callback 参数提供了一种方法,用于在根据应用程序确定的条件开始后停止绘制图像。This overload with the callback parameter provides the means to stop the drawing of an image once it starts according to criteria determined by the application. 例如,应用程序可以开始绘制大图像,用户可能会在屏幕上滚动图像,在这种情况下,应用程序可以停止绘图。For example, an application could start drawing a large image and the user might scroll the image off the screen, in which case the application could stop the drawing.

另请参阅

DrawImage(Image, Rectangle, Single, Single, Single, Single, GraphicsUnit, ImageAttributes)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, System::Drawing::Rectangle destRect, float srcX, float srcY, float srcWidth, float srcHeight, System::Drawing::GraphicsUnit srcUnit, System::Drawing::Imaging::ImageAttributes ^ imageAttrs);
public void DrawImage (System.Drawing.Image image, System.Drawing.Rectangle destRect, float srcX, float srcY, float srcWidth, float srcHeight, System.Drawing.GraphicsUnit srcUnit, System.Drawing.Imaging.ImageAttributes imageAttrs);
member this.DrawImage : System.Drawing.Image * System.Drawing.Rectangle * single * single * single * single * System.Drawing.GraphicsUnit * System.Drawing.Imaging.ImageAttributes -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destRect
Rectangle

Rectangle 结构,它指定所绘制图像的位置和大小。Rectangle structure that specifies the location and size of the drawn image. 将图像进行缩放以适合该矩形。The image is scaled to fit the rectangle.

srcX
Single

要绘制的源图像部分的左上角的 x 坐标。The x-coordinate of the upper-left corner of the portion of the source image to draw.

srcY
Single

要绘制的源图像部分的左上角的 y 坐标。The y-coordinate of the upper-left corner of the portion of the source image to draw.

srcWidth
Single

要绘制的源图像部分的宽度。Width of the portion of the source image to draw.

srcHeight
Single

要绘制的源图像部分的高度。Height of the portion of the source image to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定用于确定源矩形的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used to determine the source rectangle.

imageAttrs
ImageAttributes

ImageAttributes,它指定 image 对象的重新着色和伽玛信息。ImageAttributes that specifies recoloring and gamma information for the image object.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建要在其中绘制图像的目标矩形。Creates a destination rectangle in which to draw the image.

  • 创建要从中提取图像部分的源矩形的坐标。Creates the coordinates of a source rectangle from which to extract a portion of the image.

  • 将源矩形的度量单位设置为像素。Sets the unit of measure of the source rectangle to pixels.

  • 将原始图像绘制到屏幕上。Draws the original image to the screen.

  • 创建一个要在其中绘制调整后的图像的其他矩形。Creates an additional rectangle in which to draw an adjusted image.

  • 创建并设置调整后的图像的属性,使其具有比平时更大的伽玛值。Creates and sets the attributes of the adjusted image to have a larger-than-usual gamma value.

  • 在屏幕上绘制调整后的图像。Draws the adjusted image to the screen.

对于原始的 unadjusted 目标矩形,位置在屏幕上定位图像,源和目标矩形的大小决定了所绘制图像的缩放,并且源矩形的大小决定了将原始图像绘制到屏幕上。For the original, unadjusted destination rectangle, the position locates the image on the screen, and the sizes of the source and destination rectangles determine the scaling of the drawn image, and the size of the source rectangle determines what portion of the original image is drawn to the screen.

private:
   void DrawImageRect4FloatAttrib( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create rectangle for displaying original image.
      Rectangle destRect1 = Rectangle(100,25,450,150);

      // Create coordinates of rectangle for source image.
      float x = 50.0F;
      float y = 50.0F;
      float width = 150.0F;
      float height = 150.0F;
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Draw original image to screen.
      e->Graphics->DrawImage( newImage, destRect1, x, y, width, height, units );

      // Create rectangle for adjusted image.
      Rectangle destRect2 = Rectangle(100,175,450,150);

      // Create image attributes and set large gamma.
      ImageAttributes^ imageAttr = gcnew ImageAttributes;
      imageAttr->SetGamma( 4.0F );

      // Draw adjusted image to screen.
      e->Graphics->DrawImage( newImage, destRect2, x, y, width, height, units, imageAttr );
   }
private void DrawImageRect4FloatAttrib(PaintEventArgs e)
{
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create rectangle for displaying original image.
    Rectangle destRect1 = new Rectangle(100, 25, 450, 150);
             
    // Create coordinates of rectangle for source image.
    float x = 50.0F;
    float y = 50.0F;
    float width = 150.0F;
    float height = 150.0F;
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw original image to screen.
    e.Graphics.DrawImage(newImage, destRect1, x, y, width, height, units);
             
    // Create rectangle for adjusted image.
    Rectangle destRect2 = new Rectangle(100, 175, 450, 150);
             
    // Create image attributes and set large gamma.
    ImageAttributes imageAttr = new ImageAttributes();
    imageAttr.SetGamma(4.0F);
             
    // Draw adjusted image to screen.
    e.Graphics.DrawImage(newImage, destRect2, x, y, width, height, units, imageAttr);
}
Private Sub DrawImageRect4FloatAttrib(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create rectangle for displaying original image.
    Dim destRect1 As New Rectangle(100, 25, 450, 150)

    ' Create coordinates of rectangle for source image.
    Dim x As Single = 50.0F
    Dim y As Single = 50.0F
    Dim width As Single = 150.0F
    Dim height As Single = 150.0F
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw original image to screen.
    e.Graphics.DrawImage(newImage, destRect1, x, y, width, _
    height, units)

    ' Create rectangle for adjusted image.
    Dim destRect2 As New Rectangle(100, 175, 450, 150)

    ' Create image attributes and set large gamma.
    Dim imageAttr As New ImageAttributes
    imageAttr.SetGamma(4.0F)

    ' Draw adjusted image to screen.
    e.Graphics.DrawImage(newImage, destRect2, x, y, width, height, _
    units, imageAttr)
End Sub

注解

srcXsrcYsrcWidthsrcHeight 参数指定要绘制的 image 对象的矩形部分。The srcX, srcY, srcWidth, and srcHeight parameters specify a rectangular portion, of the image object to draw. 该矩形相对于源图像的左上角。The rectangle is relative to the upper-left corner of the source image. 调整此部分以容纳 destRect 参数所指定的矩形内。This portion is scaled to fit inside the rectangle specified by the destRect parameter.

另请参阅

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

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

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 ^ imageAttr);
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 imageAttr);
member this.DrawImage : System.Drawing.Image * System.Drawing.Rectangle * int * int * int * int * System.Drawing.GraphicsUnit * System.Drawing.Imaging.ImageAttributes -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destRect
Rectangle

Rectangle 结构,它指定所绘制图像的位置和大小。Rectangle structure that specifies the location and size of the drawn image. 将图像进行缩放以适合该矩形。The image is scaled to fit the rectangle.

srcX
Int32

要绘制的源图像部分的左上角的 x 坐标。The x-coordinate of the upper-left corner of the portion of the source image to draw.

srcY
Int32

要绘制的源图像部分的左上角的 y 坐标。The y-coordinate of the upper-left corner of the portion of the source image to draw.

srcWidth
Int32

要绘制的源图像部分的宽度。Width of the portion of the source image to draw.

srcHeight
Int32

要绘制的源图像部分的高度。Height of the portion of the source image to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定用于确定源矩形的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used to determine the source rectangle.

imageAttr
ImageAttributes

ImageAttributes,它指定 image 对象的重新着色和伽玛信息。ImageAttributes that specifies recoloring and gamma information for the image object.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建要在其中绘制图像的目标矩形。Creates a destination rectangle in which to draw the image.

  • 创建要从中提取图像部分的源矩形的坐标。Creates the coordinates of a source rectangle from which to extract a portion of the image.

  • 将源矩形的度量单位设置为像素。Sets the unit of measure of the source rectangle to pixels.

  • 将原始图像绘制到屏幕上。Draws the original image to the screen.

  • 创建一个要在其中绘制调整后的图像的其他矩形。Creates an additional rectangle in which to draw an adjusted image.

  • 创建并设置调整后的图像的属性,使其具有比平时更大的伽玛值。Creates and sets the attributes of the adjusted image to have a larger-than-usual gamma value.

  • 在屏幕上绘制调整后的图像。Draws the adjusted image to the screen.

对于原始的 unadjusted 目标矩形,位置在屏幕上定位图像,源和目标矩形的大小决定了所绘制图像的缩放,并且源矩形的大小决定了将原始图像绘制到屏幕上。For the original, unadjusted destination rectangle, the position locates the image on the screen, and the sizes of the source and destination rectangles determine the scaling of the drawn image, and the size of the source rectangle determines what portion of the original image is drawn to the screen.

void DrawImageRect4IntAtrrib( PaintEventArgs^ e )
{
   // Create image.
   Image^ newImage = Image::FromFile( "SampImag.jpg" );

   // Create rectangle for displaying original image.
   Rectangle destRect1 = Rectangle(100,25,450,150);

   // Create coordinates of rectangle for source image.
   int x = 50;
   int y = 50;
   int width = 150;
   int height = 150;
   GraphicsUnit units = GraphicsUnit::Pixel;

   // Draw original image to screen.
   e->Graphics->DrawImage( newImage, destRect1, x, y, width, height, units );

   // Create rectangle for adjusted image.
   Rectangle destRect2 = Rectangle(100,175,450,150);

   // Create image attributes and set large gamma.
   ImageAttributes^ imageAttr = gcnew ImageAttributes;
   imageAttr->SetGamma( 4.0F );

   // Draw adjusted image to screen.
   e->Graphics->DrawImage( newImage, destRect2, x, y, width, height, units, imageAttr );
}
private void DrawImageRect4IntAtrrib(PaintEventArgs e)
{
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create rectangle for displaying original image.
    Rectangle destRect1 = new Rectangle(100, 25, 450, 150);
             
    // Create coordinates of rectangle for source image.
    int x = 50;
    int y = 50;
    int width = 150;
    int height = 150;
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw original image to screen.
    e.Graphics.DrawImage(newImage, destRect1, x, y, width, height, units);
             
    // Create rectangle for adjusted image.
    Rectangle destRect2 = new Rectangle(100, 175, 450, 150);
             
    // Create image attributes and set large gamma.
    ImageAttributes imageAttr = new ImageAttributes();
    imageAttr.SetGamma(4.0F);
             
    // Draw adjusted image to screen.
    e.Graphics.DrawImage(newImage, destRect2, x, y, width, height, units, imageAttr);
}
Private Sub DrawImageRect4IntAtrrib(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create rectangle for displaying original image.
    Dim destRect1 As New Rectangle(100, 25, 450, 150)

    ' Create coordinates of rectangle for source image.
    Dim x As Integer = 50
    Dim y As Integer = 50
    Dim width As Integer = 150
    Dim height As Integer = 150
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw original image to screen.
    e.Graphics.DrawImage(newImage, destRect1, x, y, width, height, _
    units)

    ' Create rectangle for adjusted image.
    Dim destRect2 As New Rectangle(100, 175, 450, 150)

    ' Create image attributes and set large gamma.
    Dim imageAttr As New ImageAttributes
    imageAttr.SetGamma(4.0F)

    ' Draw adjusted image to screen.
    e.Graphics.DrawImage(newImage, destRect2, x, y, width, height, _
    units, imageAttr)
End Sub

注解

srcXsrcYsrcWidthsrcHeight 参数指定要绘制的 image 对象的矩形部分。The srcX, srcY, srcWidth, and srcHeight parameters specify a rectangular portion, of the image object to draw. 该矩形相对于源图像的左上角。The rectangle is relative to the upper-left corner of the source image. 调整此部分以容纳 destRect 参数所指定的矩形内。This portion is scaled to fit inside the rectangle specified by the destRect parameter.

另请参阅

DrawImage(Image, Rectangle, Single, Single, Single, Single, GraphicsUnit)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, System::Drawing::Rectangle destRect, float srcX, float srcY, float srcWidth, float srcHeight, System::Drawing::GraphicsUnit srcUnit);
public void DrawImage (System.Drawing.Image image, System.Drawing.Rectangle destRect, float srcX, float srcY, float srcWidth, float srcHeight, System.Drawing.GraphicsUnit srcUnit);
member this.DrawImage : System.Drawing.Image * System.Drawing.Rectangle * single * single * single * single * System.Drawing.GraphicsUnit -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destRect
Rectangle

Rectangle 结构,它指定所绘制图像的位置和大小。Rectangle structure that specifies the location and size of the drawn image. 将图像进行缩放以适合该矩形。The image is scaled to fit the rectangle.

srcX
Single

要绘制的源图像部分的左上角的 x 坐标。The x-coordinate of the upper-left corner of the portion of the source image to draw.

srcY
Single

要绘制的源图像部分的左上角的 y 坐标。The y-coordinate of the upper-left corner of the portion of the source image to draw.

srcWidth
Single

要绘制的源图像部分的宽度。Width of the portion of the source image to draw.

srcHeight
Single

要绘制的源图像部分的高度。Height of the portion of the source image to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定用于确定源矩形的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used to determine the source rectangle.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建要在其中绘制图像的目标矩形的坐标。Creates the coordinates of a destination rectangle in which to draw the image.

  • 创建要从中提取部分图像的源矩形。Creates a source rectangle from which to extract a portion of the image.

  • 将源矩形的度量单位设置为像素。Sets the unit of measure of the source rectangle to pixels.

  • 将图像绘制到屏幕上。Draws the image to the screen.

目标矩形的位置查找屏幕上的图像,源矩形和目标矩形的大小决定了所绘制图像的缩放,并且源矩形的大小决定了将原始图像的哪部分绘制到联机.The position of the destination rectangle locates the image on the screen, the sizes of the source and destination rectangles determine the scaling of the drawn image, and the size of the source rectangle determines what portion of the original image is drawn to the screen.

private:
   void DrawImageRect4Float( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create rectangle for displaying image.
      Rectangle destRect = Rectangle(100,100,450,150);

      // Create coordinates of rectangle for source image.
      float x = 50.0F;
      float y = 50.0F;
      float width = 150.0F;
      float height = 150.0F;
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, destRect, x, y, width, height, units );
   }
private void DrawImageRect4Float(PaintEventArgs e)
{
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create rectangle for displaying image.
    Rectangle destRect = new Rectangle(100, 100, 450, 150);
             
    // Create coordinates of rectangle for source image.
    float x = 50.0F;
    float y = 50.0F;
    float width = 150.0F;
    float height = 150.0F;
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, destRect, x, y, width, height, units);
}
Private Sub DrawImageRect4Float(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create rectangle for displaying image.
    Dim destRect As New Rectangle(100, 100, 450, 150)

    ' Create coordinates of rectangle for source image.
    Dim x As Single = 50.0F
    Dim y As Single = 50.0F
    Dim width As Single = 150.0F
    Dim height As Single = 150.0F
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, destRect, x, y, width, height, _
    units)
End Sub

注解

srcXsrcYsrcWidthsrcHeight 参数指定要绘制的 image 对象的矩形部分。The srcX, srcY, srcWidth, and srcHeight parameters specify a rectangular portion, of the image object to draw. 该矩形相对于源图像的左上角。The rectangle is relative to the upper-left corner of the source image. 调整此部分以容纳 destRect 参数所指定的矩形内。This portion is scaled to fit inside the rectangle specified by the destRect parameter.

另请参阅

DrawImage(Image, Rectangle, Int32, Int32, Int32, Int32, GraphicsUnit)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, System::Drawing::Rectangle destRect, int srcX, int srcY, int srcWidth, int srcHeight, System::Drawing::GraphicsUnit srcUnit);
public void DrawImage (System.Drawing.Image image, System.Drawing.Rectangle destRect, int srcX, int srcY, int srcWidth, int srcHeight, System.Drawing.GraphicsUnit srcUnit);
member this.DrawImage : System.Drawing.Image * System.Drawing.Rectangle * int * int * int * int * System.Drawing.GraphicsUnit -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destRect
Rectangle

Rectangle 结构,它指定所绘制图像的位置和大小。Rectangle structure that specifies the location and size of the drawn image. 将图像进行缩放以适合该矩形。The image is scaled to fit the rectangle.

srcX
Int32

要绘制的源图像部分的左上角的 x 坐标。The x-coordinate of the upper-left corner of the portion of the source image to draw.

srcY
Int32

要绘制的源图像部分的左上角的 y 坐标。The y-coordinate of the upper-left corner of the portion of the source image to draw.

srcWidth
Int32

要绘制的源图像部分的宽度。Width of the portion of the source image to draw.

srcHeight
Int32

要绘制的源图像部分的高度。Height of the portion of the source image to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定用于确定源矩形的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used to determine the source rectangle.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建要在其中绘制图像的目标矩形。Creates a destination rectangle in which to draw the image.

  • 创建要从中提取图像部分的源矩形的坐标。Creates the coordinates of a source rectangle from which to extract a portion of the image.

  • 将源矩形的度量单位设置为像素。Sets the unit of measure of the source rectangle to pixels.

  • 将图像绘制到屏幕上。Draws the image to the screen.

目标矩形的位置将在屏幕上查找图像,源矩形和目标矩形的大小决定了所绘制图像的缩放,并且源矩形的大小决定了将原始图像的哪部分绘制到联机.The position of the destination rectangle locates the image on the screen, and the sizes of the source and destination rectangles determine the scaling of the drawn image, and the size of the source rectangle determines what portion of the original image is drawn to the screen.

void DrawImageRect4Int( PaintEventArgs^ e )
{
   // Create image.
   Image^ newImage = Image::FromFile( "SampImag.jpg" );

   // Create rectangle for displaying image.
   Rectangle destRect = Rectangle(100,100,450,150);

   // Create coordinates of rectangle for source image.
   int x = 50;
   int y = 50;
   int width = 150;
   int height = 150;
   GraphicsUnit units = GraphicsUnit::Pixel;

   // Draw image to screen.
   e->Graphics->DrawImage( newImage, destRect, x, y, width, height, units );
}
private void DrawImageRect4Int(PaintEventArgs e)
{
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create rectangle for displaying image.
    Rectangle destRect = new Rectangle(100, 100, 450, 150);
             
    // Create coordinates of rectangle for source image.
    int x = 50;
    int y = 50;
    int width = 150;
    int height = 150;
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, destRect, x, y, width, height, units);
}
Private Sub DrawImageRect4Int(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create rectangle for displaying image.
    Dim destRect As New Rectangle(100, 100, 450, 150)

    ' Create coordinates of rectangle for source image.
    Dim x As Integer = 50
    Dim y As Integer = 50
    Dim width As Integer = 150
    Dim height As Integer = 150
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, destRect, x, y, width, height, _
    units)
End Sub

注解

srcXsrcYsrcWidthsrcHeight 参数指定要绘制的 image 对象的矩形部分。The srcX, srcY, srcWidth, and srcHeight parameters specify a rectangular portion, of the image object to draw. 该矩形相对于源图像的左上角。The rectangle is relative to the upper-left corner of the source image. 调整此部分以容纳 destRect 参数所指定的矩形内。This portion is scaled to fit inside the rectangle specified by the destRect parameter.

另请参阅

DrawImage(Image, PointF[], RectangleF, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, Int32)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, cli::array <System::Drawing::PointF> ^ destPoints, System::Drawing::RectangleF srcRect, System::Drawing::GraphicsUnit srcUnit, System::Drawing::Imaging::ImageAttributes ^ imageAttr, System::Drawing::Graphics::DrawImageAbort ^ callback, int callbackData);
public void DrawImage (System.Drawing.Image image, System.Drawing.PointF[] destPoints, System.Drawing.RectangleF srcRect, System.Drawing.GraphicsUnit srcUnit, System.Drawing.Imaging.ImageAttributes imageAttr, System.Drawing.Graphics.DrawImageAbort callback, int callbackData);
member this.DrawImage : System.Drawing.Image * System.Drawing.PointF[] * System.Drawing.RectangleF * System.Drawing.GraphicsUnit * System.Drawing.Imaging.ImageAttributes * System.Drawing.Graphics.DrawImageAbort * int -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destPoints
PointF[]

由三个 PointF 结构组成的数组,这三个结构定义一个平行四边形。Array of three PointF structures that define a parallelogram.

srcRect
RectangleF

RectangleF 结构,它指定 image 对象中要绘制的部分。RectangleF structure that specifies the portion of the image object to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定 srcRect 参数所用的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used by the srcRect parameter.

imageAttr
ImageAttributes

ImageAttributes,它指定 image 对象的重新着色和伽玛信息。ImageAttributes that specifies recoloring and gamma information for the image object.

callback
Graphics.DrawImageAbort

Graphics.DrawImageAbort 委托,它指定在绘制图像期间要调用的方法。Graphics.DrawImageAbort delegate that specifies a method to call during the drawing of the image. 此方法被频繁调用以检查是否根据应用程序确定的条件停止 DrawImage(Image, PointF[], RectangleF, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, Int32) 方法的执行。This method is called frequently to check whether to stop execution of the DrawImage(Image, PointF[], RectangleF, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, Int32) method according to application-determined criteria.

callbackData
Int32

一个值,它为 Graphics.DrawImageAbort 委托指定在检查是否停止执行 DrawImage(Image, PointF[], RectangleF, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, Int32) 方法时要使用的附加数据。Value specifying additional data for the Graphics.DrawImageAbort delegate to use when checking whether to stop execution of the DrawImage(Image, PointF[], RectangleF, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, Int32) method.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 PaPaint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the PaPaint event handler. 代码首先为 Graphics.DrawImageAbort 委托定义回调方法;定义是简化的,仅测试 DrawImage 方法是否使用 null callBackData 参数调用该定义。The code first defines a callback method for the Graphics.DrawImageAbort delegate; the definition is simplistic and merely tests to see whether the DrawImage method calls it with a null callBackData parameter. 示例的主体执行以下操作:The main body of the example performs the following actions:

  • 创建 Graphics.DrawImageAbort 回调方法的实例。Creates an instance of the Graphics.DrawImageAbort callback method.

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建定义要在其中绘制图像的平行四边形的点。Creates points that define a parallelogram in which to draw the image.

  • 创建矩形以选择要绘制的图像部分。Creates a rectangle to select the portion of the image to draw.

  • 将图形绘图单位设置为像素。Sets the graphics drawing unit to pixel.

  • 将原始图像绘制到屏幕上。Draws the original image to the screen.

  • 创建一个要在其中绘制调整后的图像的附加平行四边形。Creates an additional parallelogram in which to draw an adjusted image.

  • 创建并设置调整后的图像的属性,使其具有比平时更大的伽玛值。Creates and sets the attributes of the adjusted image to have a larger-than-usual gamma value.

  • 在屏幕上绘制调整后的图像。Draws the adjusted image to the screen.

对于原始的、unadjusted 的平行四边形,位置在屏幕上定位图像,而矩形的大小和平行四边形的大小和形状决定了所绘制图像的缩放和切变。For the original, unadjusted parallelogram, the position locates the image on the screen, and the size of the rectangle and the size and shape of the parallelogram determines the scaling and shearing of the drawn image.

由于此示例使用传递了一个 callBackData 参数的重载,因此 Graphics.DrawImageAbort 回调返回 false,这将导致 DrawImage 方法继续,此示例将调整后的图像绘制到屏幕上。Because this example uses an overload that passes a callBackData parameter, the Graphics.DrawImageAbort callback returns false, which causes the DrawImage method to continue, and the example draws the adjusted image to the screen.

   // 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;
      }
   }

private:
   void DrawImageParaFRectAttribAbortData( PaintEventArgs^ e )
   {
      // Create callback method.
      Graphics::DrawImageAbort^ imageCallback = gcnew Graphics::DrawImageAbort( this, &Form1::DrawImageCallback4 );
      int imageCallbackData = 1;

      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create parallelogram for drawing original image.
      PointF ulCorner1 = PointF(100.0F,100.0F);
      PointF urCorner1 = PointF(325.0F,100.0F);
      PointF llCorner1 = PointF(150.0F,250.0F);
      array<PointF>^ destPara1 = {ulCorner1,urCorner1,llCorner1};

      // Create rectangle for source image.
      RectangleF srcRect = RectangleF(50.0F,50.0F,150.0F,150.0F);
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Create parallelogram for drawing adjusted image.
      PointF ulCorner2 = PointF(325.0F,100.0F);
      PointF urCorner2 = PointF(550.0F,100.0F);
      PointF llCorner2 = PointF(375.0F,250.0F);
      array<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 = gcnew ImageAttributes;
      imageAttr->SetGamma( 4.0F );
      try
      {
         // Draw adjusted image to screen.
         e->Graphics->DrawImage( newImage, destPara2, srcRect, units, imageAttr, imageCallback, imageCallbackData );
      }
      catch ( Exception^ ex ) 
      {
         e->Graphics->DrawString( ex->ToString(), gcnew System::Drawing::Font( "Arial",8 ), Brushes::Black, PointF(0,0) );
      }
   }

// 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;
    }
}
private 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));
    }
}
Private Function DrawImageCallback4(ByVal callBackData As IntPtr) As Boolean

    ' Test for call that passes callBackData parameter.
    If callBackData.Equals(IntPtr.Zero) Then

        ' If no callBackData passed, abort DrawImage method.
        Return True
    Else

        ' If callBackData passed, continue DrawImage method.
        Return False
    End If
End Function
Private Sub DrawImageParaFRectAttribAbortData(ByVal e As PaintEventArgs)

    ' Create callback method.
    Dim imageCallback As New _
    Graphics.DrawImageAbort(AddressOf DrawImageCallback4)
    Dim imageCallbackData As Integer = 1

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create parallelogram for drawing original image.
    Dim ulCorner1 As New PointF(100.0F, 100.0F)
    Dim urCorner1 As New PointF(325.0F, 100.0F)
    Dim llCorner1 As New PointF(150.0F, 250.0F)
    Dim destPara1 As PointF() = {ulCorner1, urCorner1, llCorner1}

    ' Create rectangle for source image.
    Dim srcRect As New RectangleF(50.0F, 50.0F, 150.0F, 150.0F)
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Create parallelogram for drawing adjusted image.
    Dim ulCorner2 As New PointF(325.0F, 100.0F)
    Dim urCorner2 As New PointF(550.0F, 100.0F)
    Dim llCorner2 As New PointF(375.0F, 250.0F)
    Dim destPara2 As PointF() = {ulCorner2, urCorner2, llCorner2}

    ' Draw original image to screen.
    e.Graphics.DrawImage(newImage, destPara1, srcRect, units)

    ' Create image attributes and set large gamma.
    Dim imageAttr As New ImageAttributes
    imageAttr.SetGamma(4.0F)
    Try

        ' Draw adjusted image to screen.
        e.Graphics.DrawImage(newImage, destPara2, srcRect, units, _
        imageAttr, imageCallback, imageCallbackData)
    Catch ex As Exception
        e.Graphics.DrawString(ex.ToString(), New Font("Arial", 8), _
        Brushes.Black, New PointF(0, 0))
    End Try
End Sub

注解

destPoints 参数指定平行四边形的三个点。The destPoints parameter specifies three points of a parallelogram. 这三个 PointF 结构表示平行四边形的左上角、右上角和左下角。The three PointF structures represent the upper-left, upper-right, and lower-left corners of the parallelogram. 第四个点是从前三个位置推断来形成平行四边形。The fourth point is extrapolated from the first three to form a parallelogram.

srcRect 参数指定要绘制的 image 对象的矩形部分。The srcRect parameter specifies a rectangular portion of the image object to draw. 对此部分进行缩放和剪切,以适合 destPoints 参数所指定的平行四边形。This portion is scaled and sheared to fit inside the parallelogram specified by the destPoints parameter.

使用 callbackcallbackData 参数的此重载可提供一种方法,用于在根据应用程序确定的条件和数据开始后停止绘制图像。This overload with the callback and callbackData parameters provides the means to stop the drawing of an image once it starts according to criteria and data determined by the application. 例如,应用程序可以开始绘制大图像,用户可能会在屏幕上滚动图像,在这种情况下,应用程序可以停止绘图。For example, an application could start drawing a large image and the user might scroll the image off the screen, in which case the application could stop the drawing.

另请参阅

DrawImage(Image, Point[], Rectangle, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, Int32)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, cli::array <System::Drawing::Point> ^ destPoints, System::Drawing::Rectangle srcRect, System::Drawing::GraphicsUnit srcUnit, System::Drawing::Imaging::ImageAttributes ^ imageAttr, System::Drawing::Graphics::DrawImageAbort ^ callback, int callbackData);
public void DrawImage (System.Drawing.Image image, System.Drawing.Point[] destPoints, System.Drawing.Rectangle srcRect, System.Drawing.GraphicsUnit srcUnit, System.Drawing.Imaging.ImageAttributes imageAttr, System.Drawing.Graphics.DrawImageAbort callback, int callbackData);
member this.DrawImage : System.Drawing.Image * System.Drawing.Point[] * System.Drawing.Rectangle * System.Drawing.GraphicsUnit * System.Drawing.Imaging.ImageAttributes * System.Drawing.Graphics.DrawImageAbort * int -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destPoints
Point[]

由三个 PointF 结构组成的数组,这三个结构定义一个平行四边形。Array of three PointF structures that define a parallelogram.

srcRect
Rectangle

Rectangle 结构,它指定 image 对象中要绘制的部分。Rectangle structure that specifies the portion of the image object to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定 srcRect 参数所用的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used by the srcRect parameter.

imageAttr
ImageAttributes

ImageAttributes,它指定 image 对象的重新着色和伽玛信息。ImageAttributes that specifies recoloring and gamma information for the image object.

callback
Graphics.DrawImageAbort

Graphics.DrawImageAbort 委托,它指定在绘制图像期间要调用的方法。Graphics.DrawImageAbort delegate that specifies a method to call during the drawing of the image. 此方法被频繁调用以检查是否根据应用程序确定的条件停止 DrawImage(Image, Point[], Rectangle, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, Int32) 方法的执行。This method is called frequently to check whether to stop execution of the DrawImage(Image, Point[], Rectangle, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, Int32) method according to application-determined criteria.

callbackData
Int32

一个值,它为 Graphics.DrawImageAbort 委托指定在检查是否停止执行 DrawImage(Image, Point[], Rectangle, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, Int32) 方法时要使用的附加数据。Value specifying additional data for the Graphics.DrawImageAbort delegate to use when checking whether to stop execution of the DrawImage(Image, Point[], Rectangle, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort, Int32) method.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 代码首先为 Graphics.DrawImageAbort 委托定义回调方法;定义是简化的,仅测试 DrawImage 方法是否使用 null callBackData 参数调用该定义。The code first defines a callback method for the Graphics.DrawImageAbort delegate; the definition is simplistic and merely tests to see whether the DrawImage method calls it with a null callBackData parameter. 示例的主体执行以下操作:The main body of the example performs the following actions:

  • 创建 Graphics.DrawImageAbort 回调方法的实例。Creates an instance of the Graphics.DrawImageAbort callback method.

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建定义要在其中绘制图像的平行四边形的点。Creates points that define a parallelogram in which to draw the image.

  • 创建矩形以选择要绘制的图像部分。Creates a rectangle to select the portion of the image to draw.

  • 将图形绘图单位设置为像素。Sets the graphics drawing unit to pixel.

  • 将原始图像绘制到屏幕上。Draws the original image to the screen.

  • 创建一个要在其中绘制调整后的图像的附加平行四边形。Creates an additional parallelogram in which to draw an adjusted image.

  • 创建并设置调整后的图像的属性,使其具有比平时更大的伽玛值。Creates and sets the attributes of the adjusted image to have a larger-than-usual gamma value.

  • 在屏幕上绘制调整后的图像。Draws the adjusted image to the screen.

对于原始的、unadjusted 的平行四边形,位置在屏幕上定位图像,而矩形的大小和平行四边形的大小和形状决定了所绘制图像的缩放和切变。For the original, unadjusted parallelogram, the position locates the image on the screen, and the size of the rectangle and the size and shape of the parallelogram determines the scaling and shearing of the drawn image.

由于此示例使用传递了一个 callBackData 参数的重载,因此 Graphics.DrawImageAbort 回调返回 false,这将导致 DrawImage 方法继续,此示例将调整后的图像绘制到屏幕上。Because this example uses an overload that passes a callBackData parameter, the Graphics.DrawImageAbort callback returns false, which causes the DrawImage method to continue, and the example draws the adjusted image to the screen.

   // Define DrawImageAbort callback method.
private:
   bool DrawImageCallback2( 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;
      }
   }

private:
   void DrawImageParaRectAttribAbortData( PaintEventArgs^ e )
   {
      // Create callback method.
      Graphics::DrawImageAbort^ imageCallback = gcnew Graphics::DrawImageAbort( this, &Form1::DrawImageCallback2 );
      int imageCallbackData = 1;

      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create parallelogram for drawing original image.
      Point ulCorner = Point(100,100);
      Point urCorner = Point(550,100);
      Point llCorner = Point(150,250);
      array<Point>^ destPara1 = {ulCorner,urCorner,llCorner};

      // Create rectangle for source image.
      Rectangle srcRect = Rectangle(50,50,150,150);
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Draw original image to screen.
      e->Graphics->DrawImage( newImage, destPara1, srcRect, units );

      // Create parallelogram for drawing adjusted image.
      Point ulCorner2 = Point(325,100);
      Point urCorner2 = Point(550,100);
      Point llCorner2 = Point(375,250);
      array<Point>^ destPara2 = {ulCorner2,urCorner2,llCorner2};

      // Create image attributes and set large gamma.
      ImageAttributes^ imageAttr = gcnew ImageAttributes;
      imageAttr->SetGamma( 4.0F );
      try
      {
         // Draw image to screen.
         e->Graphics->DrawImage( newImage, destPara2, srcRect, units, imageAttr, imageCallback, imageCallbackData );
      }
      catch ( Exception^ ex ) 
      {
         e->Graphics->DrawString( ex->ToString(), gcnew System::Drawing::Font( "Arial",8 ), Brushes::Black, PointF(0,0) );
      }
   }

// Define DrawImageAbort callback method.
private bool DrawImageCallback2(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;
    }
}
private void DrawImageParaRectAttribAbortData(PaintEventArgs e)
{
             
    // Create callback method.
    Graphics.DrawImageAbort imageCallback
        = new Graphics.DrawImageAbort(DrawImageCallback2);
    int imageCallbackData = 1;
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create parallelogram for drawing original image.
    Point ulCorner = new Point(100, 100);
    Point urCorner = new Point(550, 100);
    Point llCorner = new Point(150, 250);
    Point[] destPara1 = {ulCorner, urCorner, llCorner};
             
    // Create rectangle for source image.
    Rectangle srcRect = new Rectangle(50, 50, 150, 150);
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw original image to screen.
    e.Graphics.DrawImage(newImage, destPara1, srcRect, units);
             
    // Create parallelogram for drawing adjusted image.
    Point ulCorner2 = new Point(325, 100);
    Point urCorner2 = new Point(550, 100);
    Point llCorner2 = new Point(375, 250);
    Point[] destPara2 = {ulCorner2, urCorner2, llCorner2};
             
    // Create image attributes and set large gamma.
    ImageAttributes imageAttr = new ImageAttributes();
    imageAttr.SetGamma(4.0F);
    try
    {
        checked
        {
             
            // Draw 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));
    }
}
Private Function DrawImageCallback2(ByVal callBackData As IntPtr) As Boolean

    ' Test for call that passes callBackData parameter.
    If callBackData.Equals(IntPtr.Zero) Then

        ' If no callBackData passed, abort DrawImage method.
        Return True
    Else

        ' If callBackData passed, continue DrawImage method.
        Return False
    End If
End Function
Private Sub DrawImageParaRectAttribAbortData(ByVal e As PaintEventArgs)

    ' Create callback method.
    Dim imageCallback As New _
    Graphics.DrawImageAbort(AddressOf DrawImageCallback2)
    Dim imageCallbackData As Integer = 1

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create parallelogram for drawing original image.
    Dim ulCorner As New Point(100, 100)
    Dim urCorner As New Point(550, 100)
    Dim llCorner As New Point(150, 250)
    Dim destPara1 As Point() = {ulCorner, urCorner, llCorner}

    ' Create rectangle for source image.
    Dim srcRect As New Rectangle(50, 50, 150, 150)
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw original image to screen.
    e.Graphics.DrawImage(newImage, destPara1, srcRect, units)

    ' Create parallelogram for drawing adjusted image.
    Dim ulCorner2 As New Point(325, 100)
    Dim urCorner2 As New Point(550, 100)
    Dim llCorner2 As New Point(375, 250)
    Dim destPara2 As Point() = {ulCorner2, urCorner2, llCorner2}

    ' Create image attributes and set large gamma.
    Dim imageAttr As New ImageAttributes
    imageAttr.SetGamma(4.0F)
    Try

        ' Draw image to screen.
        e.Graphics.DrawImage(newImage, destPara2, srcRect, units, _
        imageAttr, imageCallback, imageCallbackData)
    Catch ex As Exception
        e.Graphics.DrawString(ex.ToString(), New Font("Arial", 8), _
        Brushes.Black, New PointF(0, 0))
    End Try
End Sub

注解

destPoints 参数指定平行四边形的三个点。The destPoints parameter specifies three points of a parallelogram. 这三个 PointF 结构表示平行四边形的左上角、右上角和左下角。The three PointF structures represent the upper-left, upper-right, and lower-left corners of the parallelogram. 第四个点是从前三个位置推断来形成平行四边形。The fourth point is extrapolated from the first three to form a parallelogram.

srcRect 参数指定要绘制的 image 对象的矩形部分。The srcRect parameter specifies a rectangular portion of the image object to draw. 对此部分进行缩放和剪切,以适合 destPoints 参数所指定的平行四边形。This portion is scaled and sheared to fit inside the parallelogram specified by the destPoints parameter.

使用 callbackcallbackData 参数的此重载可提供一种方法,用于在根据应用程序确定的条件和数据开始后停止绘制图像。This overload with the callback and callbackData parameters provides the means to stop the drawing of an image once it starts according to criteria and data determined by the application. 例如,应用程序可以开始绘制大图像,用户可能会在屏幕上滚动图像,在这种情况下,应用程序可以停止绘图。For example, an application could start drawing a large image and the user might scroll the image off the screen, in which case the application could stop the drawing.

另请参阅

DrawImage(Image, PointF[], RectangleF, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, cli::array <System::Drawing::PointF> ^ destPoints, System::Drawing::RectangleF srcRect, System::Drawing::GraphicsUnit srcUnit, System::Drawing::Imaging::ImageAttributes ^ imageAttr, System::Drawing::Graphics::DrawImageAbort ^ callback);
public void DrawImage (System.Drawing.Image image, System.Drawing.PointF[] destPoints, System.Drawing.RectangleF srcRect, System.Drawing.GraphicsUnit srcUnit, System.Drawing.Imaging.ImageAttributes imageAttr, System.Drawing.Graphics.DrawImageAbort callback);
member this.DrawImage : System.Drawing.Image * System.Drawing.PointF[] * System.Drawing.RectangleF * System.Drawing.GraphicsUnit * System.Drawing.Imaging.ImageAttributes * System.Drawing.Graphics.DrawImageAbort -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destPoints
PointF[]

由三个 PointF 结构组成的数组,这三个结构定义一个平行四边形。Array of three PointF structures that define a parallelogram.

srcRect
RectangleF

RectangleF 结构,它指定 image 对象中要绘制的部分。RectangleF structure that specifies the portion of the image object to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定 srcRect 参数所用的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used by the srcRect parameter.

imageAttr
ImageAttributes

ImageAttributes,它指定 image 对象的重新着色和伽玛信息。ImageAttributes that specifies recoloring and gamma information for the image object.

callback
Graphics.DrawImageAbort

Graphics.DrawImageAbort 委托,它指定在绘制图像期间要调用的方法。Graphics.DrawImageAbort delegate that specifies a method to call during the drawing of the image. 此方法被频繁调用以检查是否根据应用程序确定的条件停止 DrawImage(Image, PointF[], RectangleF, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort) 方法的执行。This method is called frequently to check whether to stop execution of the DrawImage(Image, PointF[], RectangleF, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort) method according to application-determined criteria.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 代码首先为 Graphics.DrawImageAbort 委托定义回调方法;定义是简化的,仅测试 DrawImage 方法是否使用 null callBackData 参数调用该定义。The code first defines a callback method for the Graphics.DrawImageAbort delegate; the definition is simplistic and merely tests to see whether the DrawImage method calls it with a null callBackData parameter. 示例的主体执行以下操作:The main body of the example performs the following actions:

  • 创建 Graphics.DrawImageAbort 回调方法的实例。Creates an instance of the Graphics.DrawImageAbort callback method.

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建定义要在其中绘制图像的平行四边形的点。Creates points that define a parallelogram in which to draw the image.

  • 创建矩形以选择要绘制的图像部分。Creates a rectangle to select the portion of the image to draw.

  • 将图形绘图单位设置为像素。Sets the graphics drawing unit to pixel.

  • 将原始图像绘制到屏幕上。Draws the original image to the screen.

  • 创建一个要在其中绘制调整后的图像的附加平行四边形。Creates an additional parallelogram in which to draw an adjusted image.

  • 创建并设置调整后的图像的属性,使其具有比平时更大的伽玛值。Creates and sets the attributes of the adjusted image to have a larger-than-usual gamma value.

  • 在屏幕上绘制调整后的图像。Draws the adjusted image to the screen.

对于原始的、unadjusted 的平行四边形,位置在屏幕上定位图像,而矩形的大小和平行四边形的大小和形状决定了所绘制图像的缩放和切变。For the original, unadjusted parallelogram, the position locates the image on the screen, and the size of the rectangle and the size and shape of the parallelogram determines the scaling and shearing of the drawn image.

由于此示例使用不传递 callBackData 参数的重载,因此 Graphics.DrawImageAbort 回调返回 true,这将导致 DrawImage 方法结束,并且该示例中包含的异常处理代码输出异常文本,而不是绘制图像。Because this example uses an overload that does not pass a callBackData parameter, the Graphics.DrawImageAbort callback returns true, which causes the DrawImage method to end, and the exception-handling code included in the example prints out the exception text rather than drawing the image.

   // Define DrawImageAbort callback method.
private:
   bool DrawImageCallback3( 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;
      }
   }

private:
   void DrawImageParaFRectAttribAbort( PaintEventArgs^ e )
   {
      // Create callback method.
      Graphics::DrawImageAbort^ imageCallback = gcnew Graphics::DrawImageAbort( this, &Form1::DrawImageCallback3 );

      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create parallelogram for drawing original image.
      PointF ulCorner1 = PointF(100.0F,100.0F);
      PointF urCorner1 = PointF(325.0F,100.0F);
      PointF llCorner1 = PointF(150.0F,250.0F);
      array<PointF>^ destPara1 = {ulCorner1,urCorner1,llCorner1};

      // Create rectangle for source image.
      RectangleF srcRect = RectangleF(50.0F,50.0F,150.0F,150.0F);
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Create parallelogram for drawing adjusted image.
      PointF ulCorner2 = PointF(325.0F,100.0F);
      PointF urCorner2 = PointF(550.0F,100.0F);
      PointF llCorner2 = PointF(375.0F,250.0F);
      array<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 = gcnew ImageAttributes;
      imageAttr->SetGamma( 4.0F );
      try
      {
         // Draw adjusted image to screen.
         e->Graphics->DrawImage( newImage, destPara2, srcRect, units, imageAttr, imageCallback );
      }
      catch ( Exception^ ex ) 
      {
         e->Graphics->DrawString( ex->ToString(), gcnew System::Drawing::Font( "Arial",8 ), Brushes::Black, PointF(0,0) );
      }
   }

// Define DrawImageAbort callback method.
private bool DrawImageCallback3(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;
    }
}
private void DrawImageParaFRectAttribAbort(PaintEventArgs e)
{
             
    // Create callback method.
    Graphics.DrawImageAbort imageCallback
        = new Graphics.DrawImageAbort(DrawImageCallback3);
             
    // 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);
        }
    }
    catch (Exception ex)
    {
        e.Graphics.DrawString(
            ex.ToString(),
            new Font("Arial", 8),
            Brushes.Black,
            new PointF(0, 0));
    }
}
Private Function DrawImageCallback3(ByVal callBackData As IntPtr) As Boolean

    ' Test for call that passes callBackData parameter.
    If callBackData.Equals(IntPtr.Zero) Then

        ' If no callBackData passed, abort DrawImage method.
        Return True
    Else

        ' If callBackData passed, continue DrawImage method.
        Return False
    End If
End Function
Private Sub DrawImageParaFRectAttribAbort(ByVal e As PaintEventArgs)

    ' Create callback method.
    Dim imageCallback As New _
    Graphics.DrawImageAbort(AddressOf DrawImageCallback3)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create parallelogram for drawing original image.
    Dim ulCorner1 As New PointF(100.0F, 100.0F)
    Dim urCorner1 As New PointF(325.0F, 100.0F)
    Dim llCorner1 As New PointF(150.0F, 250.0F)
    Dim destPara1 As PointF() = {ulCorner1, urCorner1, llCorner1}

    ' Create rectangle for source image.
    Dim srcRect As New RectangleF(50.0F, 50.0F, 150.0F, 150.0F)
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Create parallelogram for drawing adjusted image.
    Dim ulCorner2 As New PointF(325.0F, 100.0F)
    Dim urCorner2 As New PointF(550.0F, 100.0F)
    Dim llCorner2 As New PointF(375.0F, 250.0F)
    Dim destPara2 As PointF() = {ulCorner2, urCorner2, llCorner2}

    ' Draw original image to screen.
    e.Graphics.DrawImage(newImage, destPara1, srcRect, units)

    ' Create image attributes and set large gamma.
    Dim imageAttr As New ImageAttributes
    imageAttr.SetGamma(4.0F)
    Try

        ' Draw adjusted image to screen.
        e.Graphics.DrawImage(newImage, destPara2, srcRect, units, _
        imageAttr, imageCallback)
    Catch ex As Exception
        e.Graphics.DrawString(ex.ToString(), New Font("Arial", 8), _
        Brushes.Black, New PointF(0, 0))
    End Try
End Sub

注解

destPoints 参数指定平行四边形的三个点。The destPoints parameter specifies three points of a parallelogram. 这三个 PointF 结构表示平行四边形的左上角、右上角和左下角。The three PointF structures represent the upper-left, upper-right, and lower-left corners of the parallelogram. 第四个点是从前三个位置推断来形成平行四边形。The fourth point is extrapolated from the first three to form a parallelogram.

srcRect 参数指定要绘制的 image 对象的矩形部分。The srcRect parameter specifies a rectangular portion of the image object to draw. 对此部分进行缩放和剪切,以适合 destPoints 参数所指定的平行四边形。This portion is scaled and sheared to fit inside the parallelogram specified by the destPoints parameter.

此重载与 callback 参数提供了一种方法,用于在根据应用程序确定的条件开始后停止绘制图像。This overload with the callback parameter provides the means to stop the drawing of an image once it starts according to criteria determined by the application. 例如,应用程序可以开始绘制大图像,用户可能会在屏幕上滚动图像,在这种情况下,应用程序可以停止绘图。For example, an application could start drawing a large image and the user might scroll the image off the screen, in which case the application could stop the drawing.

另请参阅

DrawImage(Image, Point[], Rectangle, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, cli::array <System::Drawing::Point> ^ destPoints, System::Drawing::Rectangle srcRect, System::Drawing::GraphicsUnit srcUnit, System::Drawing::Imaging::ImageAttributes ^ imageAttr, System::Drawing::Graphics::DrawImageAbort ^ callback);
public void DrawImage (System.Drawing.Image image, System.Drawing.Point[] destPoints, System.Drawing.Rectangle srcRect, System.Drawing.GraphicsUnit srcUnit, System.Drawing.Imaging.ImageAttributes imageAttr, System.Drawing.Graphics.DrawImageAbort callback);
member this.DrawImage : System.Drawing.Image * System.Drawing.Point[] * System.Drawing.Rectangle * System.Drawing.GraphicsUnit * System.Drawing.Imaging.ImageAttributes * System.Drawing.Graphics.DrawImageAbort -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destPoints
Point[]

由三个 PointF 结构组成的数组,这三个结构定义一个平行四边形。Array of three PointF structures that define a parallelogram.

srcRect
Rectangle

Rectangle 结构,它指定 image 对象中要绘制的部分。Rectangle structure that specifies the portion of the image object to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定 srcRect 参数所用的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used by the srcRect parameter.

imageAttr
ImageAttributes

ImageAttributes,它指定 image 对象的重新着色和伽玛信息。ImageAttributes that specifies recoloring and gamma information for the image object.

callback
Graphics.DrawImageAbort

Graphics.DrawImageAbort 委托,它指定在绘制图像期间要调用的方法。Graphics.DrawImageAbort delegate that specifies a method to call during the drawing of the image. 此方法被频繁调用以检查是否根据应用程序确定的条件停止 DrawImage(Image, Point[], Rectangle, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort) 方法的执行。This method is called frequently to check whether to stop execution of the DrawImage(Image, Point[], Rectangle, GraphicsUnit, ImageAttributes, Graphics+DrawImageAbort) method according to application-determined criteria.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 代码首先为 Graphics.DrawImageAbort 委托定义回调方法;定义是简化的,仅测试 DrawImage 方法是否使用 null callBackData 参数调用该定义。The code first defines a callback method for the Graphics.DrawImageAbort delegate; the definition is simplistic and merely tests to see whether the DrawImage method calls it with a null callBackData parameter. 示例的主体执行以下操作:The main body of the example performs the following actions:

  • 创建 Graphics.DrawImageAbort 回调方法的实例:Creates an instance of the Graphics.DrawImageAbort callback method:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建定义要在其中绘制图像的平行四边形的点。Creates points that define a parallelogram in which to draw the image.

  • 创建矩形以选择要绘制的图像部分。Creates a rectangle to select the portion of the image to draw.

  • 将图形绘图单位设置为像素。Sets the graphics drawing unit to pixel.

  • 将原始图像绘制到屏幕上。Draws the original image to the screen.

  • 创建一个要在其中绘制调整后的图像的附加平行四边形。Creates an additional parallelogram in which to draw an adjusted image.

  • 创建并设置调整后的图像的属性,使其具有比平时更大的伽玛值。Creates and sets the attributes of the adjusted image to have a larger-than-usual gamma value.

  • 在屏幕上绘制调整后的图像。Draws the adjusted image to the screen.

对于原始的、unadjusted 的平行四边形,位置在屏幕上定位图像,而矩形的大小和平行四边形的大小和形状决定了所绘制图像的缩放和切变。For the original, unadjusted parallelogram, the position locates the image on the screen, and the size of the rectangle and the size and shape of the parallelogram determines the scaling and shearing of the drawn image.

由于此示例使用不传递 callBackData 参数的重载,因此 Graphics.DrawImageAbort 回调返回 true,这将导致 DrawImage 方法结束,并且该示例中包含的异常处理代码输出异常文本,而不是绘制图像。Because this example uses an overload that does not pass a callBackData parameter, the Graphics.DrawImageAbort callback returns true, which causes the DrawImage method to end, and the exception-handling code included in the example prints out the exception text rather than drawing the image.

   // Define DrawImageAbort callback method.
private:
   bool DrawImageCallback1( 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;
      }
   }

private:
   void DrawImageParaRectAttribAbort( PaintEventArgs^ e )
   {
      // Create callback method.
      Graphics::DrawImageAbort^ imageCallback = gcnew Graphics::DrawImageAbort( this, &Form1::DrawImageCallback1 );

      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create parallelogram for drawing original image.
      Point ulCorner = Point(100,100);
      Point urCorner = Point(550,100);
      Point llCorner = Point(150,250);
      array<Point>^ destPara1 = {ulCorner,urCorner,llCorner};

      // Create rectangle for source image.
      Rectangle srcRect = Rectangle(50,50,150,150);
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Draw original image to screen.
      e->Graphics->DrawImage( newImage, destPara1, srcRect, units );

      // Create parallelogram for drawing adjusted image.
      Point ulCorner2 = Point(325,100);
      Point urCorner2 = Point(550,100);
      Point llCorner2 = Point(375,250);
      array<Point>^ destPara2 = {ulCorner2,urCorner2,llCorner2};

      // Create image attributes and set large gamma.
      ImageAttributes^ imageAttr = gcnew ImageAttributes;
      imageAttr->SetGamma( 4.0F );
      try
      {
         // Draw image to screen.
         e->Graphics->DrawImage( newImage, destPara2, srcRect, units, imageAttr, imageCallback );
      }
      catch ( Exception^ ex ) 
      {
         e->Graphics->DrawString( ex->ToString(), gcnew System::Drawing::Font( "Arial",8 ), Brushes::Black, PointF(0,0) );
      }
   }

// Define DrawImageAbort callback method.
private bool DrawImageCallback1(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;
    }
}
private void DrawImageParaRectAttribAbort(PaintEventArgs e)
{
             
    // Create callback method.
    Graphics.DrawImageAbort imageCallback
        = new Graphics.DrawImageAbort(DrawImageCallback1);
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create parallelogram for drawing original image.
    Point ulCorner = new Point(100, 100);
    Point urCorner = new Point(550, 100);
    Point llCorner = new Point(150, 250);
    Point[] destPara1 = {ulCorner, urCorner, llCorner};
             
    // Create rectangle for source image.
    Rectangle srcRect = new Rectangle(50, 50, 150, 150);
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw original image to screen.
    e.Graphics.DrawImage(newImage, destPara1, srcRect, units);
             
    // Create parallelogram for drawing adjusted image.
    Point ulCorner2 = new Point(325, 100);
    Point urCorner2 = new Point(550, 100);
    Point llCorner2 = new Point(375, 250);
    Point[] destPara2 = {ulCorner2, urCorner2, llCorner2};
             
    // Create image attributes and set large gamma.
    ImageAttributes imageAttr = new ImageAttributes();
    imageAttr.SetGamma(4.0F);
    try
    {
        checked
        {
             
            // Draw image to screen.
            e.Graphics.DrawImage(
                newImage,
                destPara2,
                srcRect,
                units,
                imageAttr,
                imageCallback);
        }
    }
    catch (Exception ex)
    {
        e.Graphics.DrawString(
            ex.ToString(),
            new Font("Arial", 8),
            Brushes.Black,
            new PointF(0, 0));
    }
}
Private Function DrawImageCallback1(ByVal callBackData As IntPtr) As Boolean

    ' Test for call that passes callBackData parameter.
    If callBackData.Equals(IntPtr.Zero) Then

        ' If no callBackData passed, abort DrawImage method.
        Return True
    Else

        ' If callBackData passed, continue DrawImage method.
        Return False
    End If
End Function
Private Sub DrawImageParaRectAttribAbort(ByVal e As PaintEventArgs)

    ' Create callback method.
    Dim imageCallback As New _
    Graphics.DrawImageAbort(AddressOf DrawImageCallback1)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create parallelogram for drawing original image.
    Dim ulCorner As New Point(100, 100)
    Dim urCorner As New Point(550, 100)
    Dim llCorner As New Point(150, 250)
    Dim destPara1 As Point() = {ulCorner, urCorner, llCorner}

    ' Create rectangle for source image.
    Dim srcRect As New Rectangle(50, 50, 150, 150)
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw original image to screen.
    e.Graphics.DrawImage(newImage, destPara1, srcRect, units)

    ' Create parallelogram for drawing adjusted image.
    Dim ulCorner2 As New Point(325, 100)
    Dim urCorner2 As New Point(550, 100)
    Dim llCorner2 As New Point(375, 250)
    Dim destPara2 As Point() = {ulCorner2, urCorner2, llCorner2}

    ' Create image attributes and set large gamma.
    Dim imageAttr As New ImageAttributes
    imageAttr.SetGamma(4.0F)
    Try

        ' Draw image to screen.
        e.Graphics.DrawImage(newImage, destPara2, srcRect, units, _
        imageAttr, imageCallback)
    Catch ex As Exception
        e.Graphics.DrawString(ex.ToString(), New Font("Arial", 8), _
        Brushes.Black, New PointF(0, 0))
    End Try
End Sub

注解

destPoints 参数指定平行四边形的三个点。The destPoints parameter specifies three points of a parallelogram. 这三个 PointF 结构表示平行四边形的左上角、右上角和左下角。The three PointF structures represent the upper-left, upper-right, and lower-left corners of the parallelogram. 第四个点是从前三个位置推断来形成平行四边形。The fourth point is extrapolated from the first three to form a parallelogram.

srcRect 参数指定要绘制的 image 对象的矩形部分。The srcRect parameter specifies a rectangular portion of the image object to draw. 对此部分进行缩放和剪切,以适合 destPoints 参数所指定的平行四边形。This portion is scaled and sheared to fit inside the parallelogram specified by the destPoints parameter.

此重载与 callback 参数提供了一种方法,用于在根据应用程序确定的条件开始后停止绘制图像。This overload with the callback parameter provides the means to stop the drawing of an image once it starts according to criteria determined by the application. 例如,应用程序可以开始绘制大图像,用户可能会在屏幕上滚动图像,在这种情况下,应用程序可以停止绘图。For example, an application could start drawing a large image and the user might scroll the image off the screen, in which case the application could stop the drawing.

另请参阅

DrawImage(Image, Int32, Int32, Int32, Int32)

在指定位置并且按指定大小绘制指定的 ImageDraws the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, int x, int y, int width, int height);
public void DrawImage (System.Drawing.Image image, int x, int y, int width, int height);
member this.DrawImage : System.Drawing.Image * int * int * int * int -> unit

参数

image
Image

要绘制的 ImageImage to draw.

x
Int32

所绘制图像的左上角的 x 坐标。The x-coordinate of the upper-left corner of the drawn image.

y
Int32

所绘制图像的左上角的 y 坐标。The y-coordinate of the upper-left corner of the drawn image.

width
Int32

所绘制图像的宽度。Width of the drawn image.

height
Int32

所绘制图像的高度。Height of the drawn image.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建要在其中绘制图像的矩形的位置和大小。Creates the position and size of a rectangle in which to draw the image.

  • 将图像绘制到屏幕上。Draws the image to the screen.

矩形的位置在屏幕上查找图像,而原始图像的大小和矩形的大小决定了所绘制图像的缩放。The position of the rectangle locates the image on the screen, and the size of the original image and the size of the rectangle determines the scaling of the drawn image.

public:
   void DrawImage4Int( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create coordinates for upper-left corner.
      // of image and for size of image.
      int x = 100;
      int y = 100;
      int width = 450;
      int height = 150;

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, x, y, width, height );
   }
public void DrawImage4Int(PaintEventArgs e)
{
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create coordinates for upper-left corner.
             
    // of image and for size of image.
    int x = 100;
    int y = 100;
    int width = 450;
    int height = 150;
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, x, y, width, height);
}
Public Sub DrawImage4Int(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create coordinates for upper-left corner

    ' of image and for size of image.
    Dim x As Integer = 100
    Dim y As Integer = 100
    Dim width As Integer = 450
    Dim height As Integer = 150

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, x, y, width, height)
End Sub

注解

xywidthheight 参数所定义的矩形决定了所绘制图像的位置和大小。The rectangle defined by the x, y, width, and height parameters determines the position and size of the drawn image.

另请参阅

DrawImage(Image, Single, Single, Single, Single)

在指定位置并且按指定大小绘制指定的 ImageDraws the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, float x, float y, float width, float height);
public void DrawImage (System.Drawing.Image image, float x, float y, float width, float height);
member this.DrawImage : System.Drawing.Image * single * single * single * single -> unit

参数

image
Image

要绘制的 ImageImage to draw.

x
Single

所绘制图像的左上角的 x 坐标。The x-coordinate of the upper-left corner of the drawn image.

y
Single

所绘制图像的左上角的 y 坐标。The y-coordinate of the upper-left corner of the drawn image.

width
Single

所绘制图像的宽度。Width of the drawn image.

height
Single

所绘制图像的高度。Height of the drawn image.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建要在其中绘制图像的矩形的位置和大小。Creates the position and size of a rectangle in which to draw the image.

  • 将图像绘制到屏幕上。Draws the image to the screen.

矩形的位置在屏幕上查找图像,而原始图像的大小和矩形的大小决定了所绘制图像的缩放。The position of the rectangle locates the image on the screen, and the size of the original image and the size of the rectangle determines the scaling of the drawn image.

public:
   void DrawImage4Float( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create coordinates for upper-left corner.
      // of image and for size of image.
      float x = 100.0F;
      float y = 100.0F;
      float width = 450.0F;
      float height = 150.0F;

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, x, y, width, height );
   }
public void DrawImage4Float(PaintEventArgs e)
{
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create coordinates for upper-left corner.
             
    // of image and for size of image.
    float x = 100.0F;
    float y = 100.0F;
    float width = 450.0F;
    float height = 150.0F;
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, x, y, width, height);
}
Public Sub DrawImage4Float(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create coordinates for upper-left corner

    ' of image and for size of image.
    Dim x As Single = 100.0F
    Dim y As Single = 100.0F
    Dim width As Single = 450.0F
    Dim height As Single = 150.0F

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, x, y, width, height)
End Sub

注解

xywidthheight 参数所定义的矩形决定了所绘制图像的位置和大小。The rectangle defined by the x, y, width, and height parameters determines the position and size of the drawn image.

另请参阅

DrawImage(Image, PointF[], RectangleF, GraphicsUnit, ImageAttributes)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, cli::array <System::Drawing::PointF> ^ destPoints, System::Drawing::RectangleF srcRect, System::Drawing::GraphicsUnit srcUnit, System::Drawing::Imaging::ImageAttributes ^ imageAttr);
public void DrawImage (System.Drawing.Image image, System.Drawing.PointF[] destPoints, System.Drawing.RectangleF srcRect, System.Drawing.GraphicsUnit srcUnit, System.Drawing.Imaging.ImageAttributes imageAttr);
member this.DrawImage : System.Drawing.Image * System.Drawing.PointF[] * System.Drawing.RectangleF * System.Drawing.GraphicsUnit * System.Drawing.Imaging.ImageAttributes -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destPoints
PointF[]

由三个 PointF 结构组成的数组,这三个结构定义一个平行四边形。Array of three PointF structures that define a parallelogram.

srcRect
RectangleF

RectangleF 结构,它指定 image 对象中要绘制的部分。RectangleF structure that specifies the portion of the image object to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定 srcRect 参数所用的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used by the srcRect parameter.

imageAttr
ImageAttributes

ImageAttributes,它指定 image 对象的重新着色和伽玛信息。ImageAttributes that specifies recoloring and gamma information for the image object.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建定义要在其中绘制图像的目标平行四边形的点。Creates points that define a destination parallelogram in which to draw the image.

  • 创建要从中提取部分图像的源矩形。Creates a source rectangle from which to extract a portion of the image.

  • 将源矩形的度量单位设置为像素。Sets the unit of measure of the source rectangle to pixels.

  • 将原始图像绘制到屏幕上。Draws the original image to the screen.

  • 创建一个要在其中绘制调整后的图像的附加平行四边形。Creates an additional parallelogram in which to draw an adjusted image.

  • 创建并设置调整后的图像的属性,使其具有比平时更大的伽玛值。Creates and sets the attributes of the adjusted image to have a larger-than-usual gamma value.

  • 在屏幕上绘制调整后的图像。Draws the adjusted image to the screen.

对于原始的 unadjusted 目标平行四边形,位置在屏幕上定位图像,源矩形的大小和目标平行四边形的大小和形状决定了所绘制图像的缩放和切变,以及矩形确定要在屏幕上绘制的原始图像部分。For the original, unadjusted destination parallelogram, the position locates the image on the screen, the size of the source rectangle and the size and shape of the destination parallelogram determines the scaling and shearing of the drawn image, and the size of the rectangle determines what portion of the original image is drawn to the screen.

void DrawImageParaFRectFAttrib( PaintEventArgs^ e )
{
   // Create image.
   Image^ newImage = Image::FromFile( "SampImag.jpg" );

   // Create parallelogram for drawing original image.
   PointF ulCorner1 = PointF(100.0F,100.0F);
   PointF urCorner1 = PointF(325.0F,100.0F);
   PointF llCorner1 = PointF(150.0F,250.0F);
   array<PointF>^ destPara1 = {ulCorner1,urCorner1,llCorner1};

   // Create rectangle for source image.
   RectangleF srcRect = RectangleF(50.0F,50.0F,150.0F,150.0F);
   GraphicsUnit units = GraphicsUnit::Pixel;

   // Create parallelogram for drawing adjusted image.
   PointF ulCorner2 = PointF(325.0F,100.0F);
   PointF urCorner2 = PointF(550.0F,100.0F);
   PointF llCorner2 = PointF(375.0F,250.0F);
   array<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 = gcnew ImageAttributes;
   imageAttr->SetGamma( 4.0F );

   // Draw adjusted image to screen.
   e->Graphics->DrawImage( newImage, destPara2, srcRect, units, imageAttr );
}
private void DrawImageParaFRectFAttrib(PaintEventArgs e)
{
             
    // 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);
             
    // Draw adjusted image to screen.
    e.Graphics.DrawImage(newImage, destPara2, srcRect, units, imageAttr);
}
Private Sub DrawImageParaFRectFAttrib(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create parallelogram for drawing original image.
    Dim ulCorner1 As New PointF(100.0F, 100.0F)
    Dim urCorner1 As New PointF(325.0F, 100.0F)
    Dim llCorner1 As New PointF(150.0F, 250.0F)
    Dim destPara1 As PointF() = {ulCorner1, urCorner1, llCorner1}

    ' Create rectangle for source image.
    Dim srcRect As New RectangleF(50.0F, 50.0F, 150.0F, 150.0F)
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Create parallelogram for drawing adjusted image.
    Dim ulCorner2 As New PointF(325.0F, 100.0F)
    Dim urCorner2 As New PointF(550.0F, 100.0F)
    Dim llCorner2 As New PointF(375.0F, 250.0F)
    Dim destPara2 As PointF() = {ulCorner2, urCorner2, llCorner2}

    ' Draw original image to screen.
    e.Graphics.DrawImage(newImage, destPara1, srcRect, units)

    ' Create image attributes and set large gamma.
    Dim imageAttr As New ImageAttributes
    imageAttr.SetGamma(4.0F)

    ' Draw adjusted image to screen.
    e.Graphics.DrawImage(newImage, destPara2, srcRect, units, _
    imageAttr)
End Sub

注解

destPoints 参数指定平行四边形的三个点。The destPoints parameter specifies three points of a parallelogram. 这三个 PointF 结构表示平行四边形的左上角、右上角和左下角。The three PointF structures represent the upper-left, upper-right, and lower-left corners of the parallelogram. 第四个点是从前三个位置推断来形成平行四边形。The fourth point is extrapolated from the first three to form a parallelogram.

srcRect 参数指定要绘制的 image 对象的矩形部分。The srcRect parameter specifies a rectangular portion of the image object to draw. 对此部分进行缩放和剪切,以适合 destPoints 参数所指定的平行四边形。This portion is scaled and sheared to fit inside the parallelogram specified by the destPoints parameter.

另请参阅

DrawImage(Image, Point)

在指定的位置使用原始物理大小绘制指定的 ImageDraws the specified Image, using its original physical size, at the specified location.

public:
 void DrawImage(System::Drawing::Image ^ image, System::Drawing::Point point);
public void DrawImage (System.Drawing.Image image, System.Drawing.Point point);
member this.DrawImage : System.Drawing.Image * System.Drawing.Point -> unit

参数

image
Image

要绘制的 ImageImage to draw.

point
Point

Point 结构,它表示所绘制图像的左上角的位置。Point structure that represents the location of the upper-left corner of the drawn image.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建一个点,在该点绘制图像的左上角。Creates a point at which to draw the upper-left corner of the image.

  • 将未缩放的图像绘制到屏幕上。Draws the unscaled image to the screen.

private:
   void DrawImagePoint( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create Point for upper-left corner of image.
      Point ulCorner = Point(100,100);

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, ulCorner );
   }
private void DrawImagePoint(PaintEventArgs e)
{         
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create Point for upper-left corner of image.
    Point ulCorner = new Point(100, 100);
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, ulCorner);
}
Private Sub DrawImagePoint(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create Point for upper-left corner of image.
    Dim ulCorner As New Point(100, 100)

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, ulCorner)
End Sub

注解

Image 存储像素宽度值和水平分辨率值(每英寸点数)。An Image stores a value for pixel width and a value for horizontal resolution (dots per inch). 图像的物理宽度(以英寸为单位)是像素宽度除以水平分辨率。The physical width, measured in inches, of an image is the pixel width divided by the horizontal resolution. 例如,像素宽度为216、水平分辨率为72点/英寸的图像的物理宽度为3英寸。For example, an image with a pixel width of 216 and a horizontal resolution of 72 dots per inch has a physical width of 3 inches. 类似的备注适用于像素高度和物理高度。Similar remarks apply to pixel height and physical height.

此方法使用其物理尺寸绘制图像,因此,无论显示设备的分辨率(每英寸点数)如何,图像的大小都将以英寸为单位。This method draws an image using its physical size, so the image will have its correct size in inches regardless of the resolution (dots per inch) of the display device. 例如,假设某个图像的像素宽度为216,水平分辨率为每英寸72点。For example, suppose an image has a pixel width of 216 and a horizontal resolution of 72 dots per inch. 如果调用此方法以将该图像绘制到分辨率为96点/英寸的设备上,则呈现的图像的像素宽度将为(216/72) * 96 = 288。If you call this method to draw that image on a device that has a resolution of 96 dots per inch, the pixel width of the rendered image will be (216/72)*96 = 288.

另请参阅

DrawImage(Image, Point[])

在指定位置并且按指定形状和大小绘制指定的 ImageDraws the specified Image at the specified location and with the specified shape and size.

public:
 void DrawImage(System::Drawing::Image ^ image, cli::array <System::Drawing::Point> ^ destPoints);
public void DrawImage (System.Drawing.Image image, System.Drawing.Point[] destPoints);
member this.DrawImage : System.Drawing.Image * System.Drawing.Point[] -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destPoints
Point[]

由三个 Point 结构组成的数组,这三个结构定义一个平行四边形。Array of three Point structures that define a parallelogram.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建定义要在其中绘制图像的平行四边形的点。Creates points that define a parallelogram in which to draw the image.

  • 将图像绘制到屏幕上。Draws the image to the screen.

平行四边形的位置将在屏幕上查找图像,原始图像的大小和平行四边形的大小和形状将决定所绘制图像的缩放和切变。The position of the parallelogram locates the image on the screen, and the size of the original image and the size and shape of the parallelogram determines the scaling and shearing of the drawn image.

private:
   void DrawImagePara( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create parallelogram for drawing image.
      Point ulCorner = Point(100,100);
      Point urCorner = Point(550,100);
      Point llCorner = Point(150,250);
      array<Point>^ destPara = {ulCorner,urCorner,llCorner};

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, destPara );
   }
private void DrawImagePara(PaintEventArgs e)
{
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create parallelogram for drawing image.
    Point ulCorner = new Point(100, 100);
    Point urCorner = new Point(550, 100);
    Point llCorner = new Point(150, 250);
    Point[] destPara = {ulCorner, urCorner, llCorner};
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, destPara);
}
Private Sub DrawImagePara(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create parallelogram for drawing image.
    Dim ulCorner As New Point(100, 100)
    Dim urCorner As New Point(550, 100)
    Dim llCorner As New Point(150, 250)
    Dim destPara As Point() = {ulCorner, urCorner, llCorner}

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, destPara)
End Sub

注解

destPoints 参数指定平行四边形的三个点。The destPoints parameter specifies three points of a parallelogram. 这三个 Point 结构表示平行四边形的左上角、右上角和左下角。The three Point structures represent the upper-left, upper-right, and lower-left corners of the parallelogram. 第四个点是从前三个位置推断来形成平行四边形。The fourth point is extrapolated from the first three to form a parallelogram.

image 参数所表示的图像将进行缩放和剪切,以适合 destPoints 参数所指定的平行四边形的形状。The image represented by the image parameter is scaled and sheared to fit the shape of the parallelogram specified by the destPoints parameters.

另请参阅

DrawImage(Image, PointF)

在指定的位置使用原始物理大小绘制指定的 ImageDraws the specified Image, using its original physical size, at the specified location.

public:
 void DrawImage(System::Drawing::Image ^ image, System::Drawing::PointF point);
public void DrawImage (System.Drawing.Image image, System.Drawing.PointF point);
member this.DrawImage : System.Drawing.Image * System.Drawing.PointF -> unit

参数

image
Image

要绘制的 ImageImage to draw.

point
PointF

PointF 结构,它指定所绘制图像的左上角。PointF structure that represents the upper-left corner of the drawn image.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建一个点,在该点绘制图像的左上角。Creates a point at which to draw the upper-left corner of the image.

  • 将未缩放的图像绘制到屏幕上。Draws the unscaled image to the screen.

private:
   void DrawImagePointF( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create point for upper-left corner of image.
      PointF ulCorner = PointF(100.0F,100.0F);

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, ulCorner );
   }
private void DrawImagePointF(PaintEventArgs e)
{
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create point for upper-left corner of image.
    PointF ulCorner = new PointF(100.0F, 100.0F);
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, ulCorner);
}
Private Sub DrawImagePointF(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create point for upper-left corner of image.
    Dim ulCorner As New PointF(100.0F, 100.0F)

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, ulCorner)
End Sub

注解

Image 存储像素宽度值和水平分辨率值(每英寸点数)。An Image stores a value for pixel width and a value for horizontal resolution (dots per inch). 图像的物理宽度(以英寸为单位)是像素宽度除以水平分辨率。The physical width, measured in inches, of an image is the pixel width divided by the horizontal resolution. 例如,像素宽度为216、水平分辨率为72点/英寸的图像的物理宽度为3英寸。For example, an image with a pixel width of 216 and a horizontal resolution of 72 dots per inch has a physical width of 3 inches. 类似的备注适用于像素高度和物理高度。Similar remarks apply to pixel height and physical height.

此方法使用其物理尺寸绘制图像,因此,无论显示设备的分辨率(每英寸点数)如何,图像的大小都将以英寸为单位。This method draws an image using its physical size, so the image will have its correct size in inches regardless of the resolution (dots per inch) of the display device. 例如,假设某个图像的像素宽度为216,水平分辨率为每英寸72点。For example, suppose an image has a pixel width of 216 and a horizontal resolution of 72 dots per inch. 如果调用此方法以将该图像绘制到分辨率为96点/英寸的设备上,则呈现的图像的像素宽度将为(216/72) * 96 = 288。If you call this method to draw that image on a device that has a resolution of 96 dots per inch, the pixel width of the rendered image will be (216/72)*96 = 288.

另请参阅

DrawImage(Image, PointF[])

在指定位置并且按指定形状和大小绘制指定的 ImageDraws the specified Image at the specified location and with the specified shape and size.

public:
 void DrawImage(System::Drawing::Image ^ image, cli::array <System::Drawing::PointF> ^ destPoints);
public void DrawImage (System.Drawing.Image image, System.Drawing.PointF[] destPoints);
member this.DrawImage : System.Drawing.Image * System.Drawing.PointF[] -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destPoints
PointF[]

由三个 PointF 结构组成的数组,这三个结构定义一个平行四边形。Array of three PointF structures that define a parallelogram.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建定义要在其中绘制图像的平行四边形的点。Creates points that define a parallelogram in which to draw the image.

  • 将图像绘制到屏幕上。Draws the image to the screen.

平行四边形的位置将在屏幕上查找图像,原始图像的大小和平行四边形的大小和形状将决定所绘制图像的缩放和切变。The position of the parallelogram locates the image on the screen, and the size of the original image and the size and shape of the parallelogram determines the scaling and shearing of the drawn image.

private:
   void DrawImageParaF( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create parallelogram for drawing image.
      PointF ulCorner = PointF(100.0F,100.0F);
      PointF urCorner = PointF(550.0F,100.0F);
      PointF llCorner = PointF(150.0F,250.0F);
      array<PointF>^ destPara = {ulCorner,urCorner,llCorner};

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, destPara );
   }
private void DrawImageParaF(PaintEventArgs e)
{
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create parallelogram for drawing image.
    PointF ulCorner = new PointF(100.0F, 100.0F);
    PointF urCorner = new PointF(550.0F, 100.0F);
    PointF llCorner = new PointF(150.0F, 250.0F);
    PointF[] destPara = {ulCorner, urCorner, llCorner};
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, destPara);
}
Private Sub DrawImageParaF(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create parallelogram for drawing image.
    Dim ulCorner As New PointF(100.0F, 100.0F)
    Dim urCorner As New PointF(550.0F, 100.0F)
    Dim llCorner As New PointF(150.0F, 250.0F)
    Dim destPara As PointF() = {ulCorner, urCorner, llCorner}

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, destPara)
End Sub

注解

destPoints 参数指定平行四边形的三个点。The destPoints parameter specifies three points of a parallelogram. 这三个 PointF 结构表示平行四边形的左上角、右上角和左下角。The three PointF structures represent the upper-left, upper-right, and lower-left corners of the parallelogram. 第四个点是从前三个位置推断来形成平行四边形。The fourth point is extrapolated from the first three to form a parallelogram.

缩放和剪切 image 对象表示的图像,以适合 destPoints 参数所指定的平行四边形的形状。The image represented by the image object is scaled and sheared to fit the shape of the parallelogram specified by the destPoints parameter.

另请参阅

DrawImage(Image, Rectangle)

在指定位置并且按指定大小绘制指定的 ImageDraws the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, System::Drawing::Rectangle rect);
public void DrawImage (System.Drawing.Image image, System.Drawing.Rectangle rect);
member this.DrawImage : System.Drawing.Image * System.Drawing.Rectangle -> unit

参数

image
Image

要绘制的 ImageImage to draw.

rect
Rectangle

Rectangle 结构,它指定所绘制图像的位置和大小。Rectangle structure that specifies the location and size of the drawn image.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建一个要在其中绘制图像的矩形。Creates a rectangle in which to draw the image.

  • 将图像绘制到屏幕上。Draws the image to the screen.

矩形的位置在屏幕上查找图像,而原始图像的大小和矩形的大小决定了所绘制图像的缩放。The position of the rectangle locates the image on the screen, and the size of the original image and the size of the rectangle determines the scaling of the drawn image.

private:
   void DrawImageRect( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create rectangle for displaying image.
      Rectangle destRect = Rectangle(100,100,450,150);

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, destRect );
   }
private void DrawImageRect(PaintEventArgs e)
{
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create rectangle for displaying image.
    Rectangle destRect = new Rectangle(100, 100, 450, 150);
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, destRect);
}
Private Sub DrawImageRect(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create rectangle for displaying image.
    Dim destRect As New Rectangle(100, 100, 450, 150)

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, destRect)
End Sub

注解

image 对象表示的图像将缩放到 rect 矩形的尺寸。The image represented by the image object is scaled to the dimensions of the rect rectangle.

另请参阅

DrawImage(Image, RectangleF)

在指定位置并且按指定大小绘制指定的 ImageDraws the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, System::Drawing::RectangleF rect);
public void DrawImage (System.Drawing.Image image, System.Drawing.RectangleF rect);
member this.DrawImage : System.Drawing.Image * System.Drawing.RectangleF -> unit

参数

image
Image

要绘制的 ImageImage to draw.

rect
RectangleF

RectangleF 结构,它指定所绘制图像的位置和大小。RectangleF structure that specifies the location and size of the drawn image.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建一个要在其中绘制图像的矩形。Creates a rectangle in which to draw the image.

  • 将图像绘制到屏幕上。Draws the image to the screen.

矩形的位置在屏幕上查找图像,图像的原始大小和矩形的大小决定了所绘制图像的缩放。The position of the rectangle locates the image on the screen, and the original size of the image and the size of the rectangle determines the scaling of the drawn image.

public:
   void DrawImageRectF( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create rectangle for displaying image.
      RectangleF rect = RectangleF(100.0F,100.0F,450.0F,150.0F);

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, rect );
   }
public void DrawImageRectF(PaintEventArgs e)
{
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create rectangle for displaying image.
    RectangleF rect = new RectangleF(100.0F, 100.0F, 450.0F, 150.0F);
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, rect);
}
Public Sub DrawImageRectF(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create rectangle for displaying image.
    Dim rect As New RectangleF(100.0F, 100.0F, 450.0F, 150.0F)

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, rect)
End Sub

注解

image 对象表示的图像将缩放到 rect 矩形的尺寸。The image represented by the image object is scaled to the dimensions of the rect rectangle.

另请参阅

DrawImage(Image, Int32, Int32)

在由坐标对指定的位置,使用图像的原始物理大小绘制指定的图像。Draws the specified image, using its original physical size, at the location specified by a coordinate pair.

public:
 void DrawImage(System::Drawing::Image ^ image, int x, int y);
public void DrawImage (System.Drawing.Image image, int x, int y);
member this.DrawImage : System.Drawing.Image * int * int -> unit

参数

image
Image

要绘制的 ImageImage to draw.

x
Int32

所绘制图像的左上角的 x 坐标。The x-coordinate of the upper-left corner of the drawn image.

y
Int32

所绘制图像的左上角的 y 坐标。The y-coordinate of the upper-left corner of the drawn image.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中,从 SampImag 的文件夹中的 JPEG 文件创建一个图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example SampImag.jpg in the folder of the example.

  • 创建要绘制图像左上角的点的坐标。Creates the coordinates of a point at which to draw the upper-left corner of the image.

  • 绘制无比例的图像。Draws the unscaled image.

public:
   void DrawImage2Int( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create coordinates for upper-left corner of image.
      int x = 100;
      int y = 100;

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, x, y );
   }
public void DrawImage2Int(PaintEventArgs e)
{
                
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
                
    // Create coordinates for upper-left corner of image.
    int x = 100;
    int y = 100;
                
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, x, y);
}
Public Sub DrawImage2Int(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create coordinates for upper-left corner of image.
    Dim x As Integer = 100
    Dim y As Integer = 100

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, x, y)
End Sub

注解

Image 存储像素宽度值和水平分辨率值(每英寸点数)。An Image stores a value for pixel width and a value for horizontal resolution (dots per inch). 图像的物理宽度(以英寸为单位)是像素宽度除以水平分辨率。The physical width, measured in inches, of an image is the pixel width divided by the horizontal resolution. 例如,像素宽度为216、水平分辨率为72点/英寸的图像的物理宽度为3英寸。For example, an image with a pixel width of 216 and a horizontal resolution of 72 dots per inch has a physical width of 3 inches. 类似的备注适用于像素高度和物理高度。Similar remarks apply to pixel height and physical height.

DrawImage 方法使用其物理尺寸绘制图像,因此,无论显示设备的分辨率(每英寸点数)如何,图像的大小都将以英寸为单位。The DrawImage method draws an image using its physical size, so the image will have its correct size in inches regardless of the resolution (dots per inch) of the display device. 例如,假设某个图像的像素宽度为216,水平分辨率为每英寸72点。For example, suppose an image has a pixel width of 216 and a horizontal resolution of 72 dots per inch. 如果调用 DrawImage 以便在分辨率为96点/英寸的设备上绘制该图像,则呈现的图像的像素宽度将为(216/72) * 96 = 288。If you call DrawImage to draw that image on a device that has a resolution of 96 dots per inch, the pixel width of the rendered image will be (216/72)*96 = 288.

另请参阅

DrawImage(Image, Int32, Int32, Rectangle, GraphicsUnit)

在指定的位置绘制图像的一部分。Draws a portion of an image at a specified location.

public:
 void DrawImage(System::Drawing::Image ^ image, int x, int y, System::Drawing::Rectangle srcRect, System::Drawing::GraphicsUnit srcUnit);
public void DrawImage (System.Drawing.Image image, int x, int y, System.Drawing.Rectangle srcRect, System.Drawing.GraphicsUnit srcUnit);
member this.DrawImage : System.Drawing.Image * int * int * System.Drawing.Rectangle * System.Drawing.GraphicsUnit -> unit

参数

image
Image

要绘制的 ImageImage to draw.

x
Int32

所绘制图像的左上角的 x 坐标。The x-coordinate of the upper-left corner of the drawn image.

y
Int32

所绘制图像的左上角的 y 坐标。The y-coordinate of the upper-left corner of the drawn image.

srcRect
Rectangle

Rectangle 结构,它指定 image 对象中要绘制的部分。Rectangle structure that specifies the portion of the image object to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定 srcRect 参数所用的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used by the srcRect parameter.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建在其上绘制图像的左上角的坐标。Creates the coordinates at which to draw the upper-left corner of the image.

  • 创建要从中提取部分图像的源矩形。Creates a source rectangle from which to extract a portion of the image.

  • 将源矩形的度量单位设置为像素。Sets the unit of measure of the source rectangle to pixels.

  • 将图像绘制到屏幕上。Draws the image to the screen.

源矩形的大小决定将未缩放的原始图像的哪部分绘制到屏幕上。The size of the source rectangle determines what portion of the unscaled original image is drawn to the screen.

public:
   void DrawImage2IntRect( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create coordinates for upper-left corner of image.
      int x = 100;
      int y = 100;

      // Create rectangle for source image.
      Rectangle srcRect = Rectangle(50,50,150,150);
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, x, y, srcRect, units );
   }
public void DrawImage2IntRect(PaintEventArgs e)
{
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create coordinates for upper-left corner of image.
    int x = 100;
    int y = 100;
             
    // Create rectangle for source image.
    Rectangle srcRect = new Rectangle(50, 50, 150, 150);
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, x, y, srcRect, units);
}
Public Sub DrawImage2IntRect(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create coordinates for upper-left corner of image.
    Dim x As Integer = 100
    Dim y As Integer = 100

    ' Create rectangle for source image.
    Dim srcRect As New Rectangle(50, 50, 150, 150)
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, x, y, srcRect, units)
End Sub

注解

Image 存储像素宽度值和水平分辨率值(每英寸点数)。An Image stores a value for pixel width and a value for horizontal resolution (dots per inch). 图像的物理宽度(以英寸为单位)是像素宽度除以水平分辨率。The physical width, measured in inches, of an image is the pixel width divided by the horizontal resolution. 例如,像素宽度为360、水平分辨率为72点/英寸的图像的物理宽度为5英寸。For example, an image with a pixel width of 360 and a horizontal resolution of 72 dots per inch has a physical width of 5 inches. 类似的备注适用于像素高度和物理高度。Similar remarks apply to pixel height and physical height.

此方法使用其物理尺寸绘制图像的一部分,因此,无论显示设备的分辨率(每英寸点数)如何,图像部分的大小都将以英寸为单位。This method draws a portion of an image using its physical size, so the image portion will have its correct size in inches regardless of the resolution (dots per inch) of the display device. 例如,假设图像部分的像素宽度为216,水平分辨率为每英寸72点。For example, suppose an image portion has a pixel width of 216 and a horizontal resolution of 72 dots per inch. 如果调用此方法将图像部分绘制到分辨率为每英寸96点的设备上,则呈现的图像部分的像素宽度将为(216/72) * 96 = 288。If you call this method to draw that image portion on a device that has a resolution of 96 dots per inch, the pixel width of the rendered image portion will be (216/72)*96 = 288.

另请参阅

DrawImage(Image, Point[], Rectangle, GraphicsUnit)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, cli::array <System::Drawing::Point> ^ destPoints, System::Drawing::Rectangle srcRect, System::Drawing::GraphicsUnit srcUnit);
public void DrawImage (System.Drawing.Image image, System.Drawing.Point[] destPoints, System.Drawing.Rectangle srcRect, System.Drawing.GraphicsUnit srcUnit);
member this.DrawImage : System.Drawing.Image * System.Drawing.Point[] * System.Drawing.Rectangle * System.Drawing.GraphicsUnit -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destPoints
Point[]

由三个 Point 结构组成的数组,这三个结构定义一个平行四边形。Array of three Point structures that define a parallelogram.

srcRect
Rectangle

Rectangle 结构,它指定 image 对象中要绘制的部分。Rectangle structure that specifies the portion of the image object to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定 srcRect 参数所用的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used by the srcRect parameter.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建定义要在其中绘制图像的平行四边形的点。Creates points that define a parallelogram in which to draw the image.

  • 创建矩形以选择要绘制的图像部分。Creates a rectangle to select the portion of the image to draw.

  • 将图形绘图单位设置为像素。Sets the graphics drawing unit to pixel.

  • 将图像绘制到屏幕上。Draws the image to the screen.

平行四边形的位置将在屏幕上查找图像,矩形的大小和平行四边形的大小和形状确定所绘制图像的缩放和切变。The position of the parallelogram locates the image on the screen, and the size of the rectangle and the size and shape of the parallelogram determines the scaling and shearing of the drawn image.

private:
   void DrawImageParaRect( PaintEventArgs^ e )
   {

      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create parallelogram for drawing image.
      Point ulCorner = Point(100,100);
      Point urCorner = Point(325,100);
      Point llCorner = Point(150,250);
      array<Point>^ destPara = {ulCorner,urCorner,llCorner};

      // Create rectangle for source image.
      Rectangle srcRect = Rectangle(50,50,150,150);
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, destPara, srcRect, units );
   }
private void DrawImageParaRect(PaintEventArgs e)
{
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create parallelogram for drawing image.
    Point ulCorner = new Point(100, 100);
    Point urCorner = new Point(325, 100);
    Point llCorner = new Point(150, 250);
    Point[] destPara = {ulCorner, urCorner, llCorner};
             
    // Create rectangle for source image.
    Rectangle srcRect = new Rectangle(50, 50, 150, 150);
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, destPara, srcRect, units);
}
Private Sub DrawImageParaRect(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create parallelogram for drawing image.
    Dim ulCorner As New Point(100, 100)
    Dim urCorner As New Point(325, 100)
    Dim llCorner As New Point(150, 250)
    Dim destPara As Point() = {ulCorner, urCorner, llCorner}

    ' Create rectangle for source image.
    Dim srcRect As New Rectangle(50, 50, 150, 150)
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, destPara, srcRect, units)
End Sub

注解

destPoints 参数指定平行四边形的三个点。The destPoints parameter specifies three points of a parallelogram. 这三个 Point 结构表示平行四边形的左上角、右上角和左下角。The three Point structures represent the upper-left, upper-right, and lower-left corners of the parallelogram. 第四个点是从前三个位置推断来形成平行四边形。The fourth point is extrapolated from the first three to form a parallelogram.

srcRect 参数指定要绘制的 image 对象的矩形部分。The srcRect parameter specifies a rectangular portion of the image object to draw. 对此部分进行缩放和剪切,以适合 destPoints 参数所指定的平行四边形。This portion is scaled and sheared to fit inside the parallelogram specified by the destPoints parameter.

另请参阅

DrawImage(Image, PointF[], RectangleF, GraphicsUnit)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, cli::array <System::Drawing::PointF> ^ destPoints, System::Drawing::RectangleF srcRect, System::Drawing::GraphicsUnit srcUnit);
public void DrawImage (System.Drawing.Image image, System.Drawing.PointF[] destPoints, System.Drawing.RectangleF srcRect, System.Drawing.GraphicsUnit srcUnit);
member this.DrawImage : System.Drawing.Image * System.Drawing.PointF[] * System.Drawing.RectangleF * System.Drawing.GraphicsUnit -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destPoints
PointF[]

由三个 PointF 结构组成的数组,这三个结构定义一个平行四边形。Array of three PointF structures that define a parallelogram.

srcRect
RectangleF

RectangleF 结构,它指定 image 对象中要绘制的部分。RectangleF structure that specifies the portion of the image object to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定 srcRect 参数所用的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used by the srcRect parameter.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建定义要在其中绘制图像的目标平行四边形的点。Creates points that define a destination parallelogram in which to draw the image.

  • 创建要从中提取部分图像的源矩形。Creates a source rectangle from which to extract a portion of the image.

  • 将源矩形的度量单位设置为像素。Sets the unit of measure of the source rectangle to pixels.

  • 将图像绘制到屏幕上。Draws the image to the screen.

目标平行四边形的位置将在屏幕上查找图像,源矩形的大小和目标平行四边形的大小和形状确定所绘制图像的缩放和切变,而矩形的大小决定将原始图像的哪些部分绘制到屏幕上。The position of the destination parallelogram locates the image on the screen, the size of the source rectangle and the size and shape of the destination parallelogram determines the scaling and shearing of the drawn image, and the size of the rectangle determines what portion of the original image is drawn to the screen.

private:
   void DrawImageParaFRectF( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create parallelogram for drawing image.
      PointF ulCorner = PointF(100.0F,100.0F);
      PointF urCorner = PointF(550.0F,100.0F);
      PointF llCorner = PointF(150.0F,250.0F);
      array<PointF>^ destPara = {ulCorner,urCorner,llCorner};

      // Create rectangle for source image.
      RectangleF srcRect = RectangleF(50.0F,50.0F,150.0F,150.0F);
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, destPara, srcRect, units );
   }
private void DrawImageParaFRectF(PaintEventArgs e)
{
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create parallelogram for drawing image.
    PointF ulCorner = new PointF(100.0F, 100.0F);
    PointF urCorner = new PointF(550.0F, 100.0F);
    PointF llCorner = new PointF(150.0F, 250.0F);
    PointF[] destPara = {ulCorner, urCorner, llCorner};
             
    // Create rectangle for source image.
    RectangleF srcRect = new RectangleF(50.0F, 50.0F, 150.0F, 150.0F);
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, destPara, srcRect, units);
}
Private Sub DrawImageParaFRectF(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create parallelogram for drawing image.
    Dim ulCorner As New PointF(100.0F, 100.0F)
    Dim urCorner As New PointF(550.0F, 100.0F)
    Dim llCorner As New PointF(150.0F, 250.0F)
    Dim destPara As PointF() = {ulCorner, urCorner, llCorner}

    ' Create rectangle for source image.
    Dim srcRect As New RectangleF(50.0F, 50.0F, 150.0F, 150.0F)
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, destPara, srcRect, units)
End Sub

注解

destPoints 参数指定平行四边形的三个点。The destPoints parameter specifies three points of a parallelogram. 这三个 PointF 结构表示平行四边形的左上角、右上角和左下角。The three PointF structures represent the upper-left, upper-right, and lower-left corners of the parallelogram. 第四个点是从前三个位置推断来形成平行四边形。The fourth point is extrapolated from the first three to form a parallelogram.

srcRect 参数指定要绘制的 image 对象的矩形部分。The srcRect parameter specifies a rectangular portion of the image object to draw. 对此部分进行缩放和剪切,以适合 destPoints 参数所指定的平行四边形。This portion is scaled and sheared to fit inside the parallelogram specified by the destPoints parameter.

另请参阅

DrawImage(Image, Rectangle, Rectangle, GraphicsUnit)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, System::Drawing::Rectangle destRect, System::Drawing::Rectangle srcRect, System::Drawing::GraphicsUnit srcUnit);
public void DrawImage (System.Drawing.Image image, System.Drawing.Rectangle destRect, System.Drawing.Rectangle srcRect, System.Drawing.GraphicsUnit srcUnit);
member this.DrawImage : System.Drawing.Image * System.Drawing.Rectangle * System.Drawing.Rectangle * System.Drawing.GraphicsUnit -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destRect
Rectangle

Rectangle 结构,它指定所绘制图像的位置和大小。Rectangle structure that specifies the location and size of the drawn image. 将图像进行缩放以适合该矩形。The image is scaled to fit the rectangle.

srcRect
Rectangle

Rectangle 结构,它指定 image 对象中要绘制的部分。Rectangle structure that specifies the portion of the image object to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定 srcRect 参数所用的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used by the srcRect parameter.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建要在其中绘制图像的目标矩形。Creates a destination rectangle in which to draw the image.

  • 创建要从中提取部分图像的源矩形。Creates a source rectangle from which to extract a portion of the image.

  • 将源矩形的度量单位设置为像素。Sets the unit of measure of the source rectangle to pixels.

  • 将图像绘制到屏幕上。Draws the image to the screen.

目标矩形的位置查找屏幕上的图像,源矩形和目标矩形的大小决定了所绘制图像的缩放,并且源矩形的大小决定了将原始图像的哪部分绘制到联机.The position of the destination rectangle locates the image on the screen, the sizes of the source and destination rectangles determine the scaling of the drawn image, and the size of the source rectangle determines what portion of the original image is drawn to the screen.

private:
   void DrawImageRectRect( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create rectangle for displaying image.
      Rectangle destRect = Rectangle(100,100,450,150);

      // Create rectangle for source image.
      Rectangle srcRect = Rectangle(50,50,150,150);
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, destRect, srcRect, units );
   }
private void DrawImageRectRect(PaintEventArgs e)
{
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create rectangle for displaying image.
    Rectangle destRect = new Rectangle(100, 100, 450, 150);
             
    // Create rectangle for source image.
    Rectangle srcRect = new Rectangle(50, 50, 150, 150);
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, destRect, srcRect, units);
}
Private Sub DrawImageRectRect(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create rectangle for displaying image.
    Dim destRect As New Rectangle(100, 100, 450, 150)

    ' Create rectangle for source image.
    Dim srcRect As New Rectangle(50, 50, 150, 150)
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, destRect, srcRect, units)
End Sub

注解

srcRect 参数指定要绘制的 image 对象的矩形部分。The srcRect parameter specifies a rectangular portion of the image object to draw. 调整此部分以容纳 destRect 参数所指定的矩形内。This portion is scaled to fit inside the rectangle specified by the destRect parameter.

另请参阅

DrawImage(Image, RectangleF, RectangleF, GraphicsUnit)

在指定位置并且按指定大小绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location and with the specified size.

public:
 void DrawImage(System::Drawing::Image ^ image, System::Drawing::RectangleF destRect, System::Drawing::RectangleF srcRect, System::Drawing::GraphicsUnit srcUnit);
public void DrawImage (System.Drawing.Image image, System.Drawing.RectangleF destRect, System.Drawing.RectangleF srcRect, System.Drawing.GraphicsUnit srcUnit);
member this.DrawImage : System.Drawing.Image * System.Drawing.RectangleF * System.Drawing.RectangleF * System.Drawing.GraphicsUnit -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destRect
RectangleF

RectangleF 结构,它指定所绘制图像的位置和大小。RectangleF structure that specifies the location and size of the drawn image. 将图像进行缩放以适合该矩形。The image is scaled to fit the rectangle.

srcRect
RectangleF

RectangleF 结构,它指定 image 对象中要绘制的部分。RectangleF structure that specifies the portion of the image object to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定 srcRect 参数所用的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used by the srcRect parameter.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建要在其中绘制图像的目标矩形。Creates a destination rectangle in which to draw the image.

  • 创建要从中提取部分图像的源矩形。Creates a source rectangle from which to extract a portion of the image.

  • 将源矩形的度量单位设置为像素。Sets the unit of measure of the source rectangle to pixels.

  • 将图像绘制到屏幕上。Draws the image to the screen.

目标矩形的位置查找屏幕上的图像,源矩形和目标矩形的大小决定了所绘制图像的缩放,并且源矩形的大小决定了将原始图像的哪部分绘制到联机.The position of the destination rectangle locates the image on the screen, the sizes of the source and destination rectangles determine the scaling of the drawn image, and the size of the source rectangle determines what portion of the original image is drawn to the screen.

public:
   void DrawImageRectFRectF( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create rectangle for displaying image.
      RectangleF destRect = RectangleF(100.0F,100.0F,450.0F,150.0F);

      // Create rectangle for source image.
      RectangleF srcRect = RectangleF(50.0F,50.0F,150.0F,150.0F);
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, destRect, srcRect, units );
   }
public void DrawImageRectFRectF(PaintEventArgs e)
{
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create rectangle for displaying image.
    RectangleF destRect = new RectangleF(100.0F, 100.0F, 450.0F, 150.0F);
             
    // Create rectangle for source image.
    RectangleF srcRect = new RectangleF(50.0F, 50.0F, 150.0F, 150.0F);
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, destRect, srcRect, units);
}
Public Sub DrawImageRectFRectF(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create rectangle for displaying image.
    Dim destRect As New RectangleF(100.0F, 100.0F, 450.0F, 150.0F)

    ' Create rectangle for source image.
    Dim srcRect As New RectangleF(50.0F, 50.0F, 150.0F, 150.0F)
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, destRect, srcRect, units)
End Sub

注解

srcRect 参数指定要绘制的 image 对象的矩形部分。The srcRect parameter specifies a rectangular portion of the image object to draw. 调整此部分以容纳 destRect 参数所指定的矩形内。This portion is scaled to fit inside the rectangle specified by the destRect parameter.

另请参阅

DrawImage(Image, Single, Single)

在指定的位置使用原始物理大小绘制指定的 ImageDraws the specified Image, using its original physical size, at the specified location.

public:
 void DrawImage(System::Drawing::Image ^ image, float x, float y);
public void DrawImage (System.Drawing.Image image, float x, float y);
member this.DrawImage : System.Drawing.Image * single * single -> unit

参数

image
Image

要绘制的 ImageImage to draw.

x
Single

所绘制图像的左上角的 x 坐标。The x-coordinate of the upper-left corner of the drawn image.

y
Single

所绘制图像的左上角的 y 坐标。The y-coordinate of the upper-left corner of the drawn image.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建要绘制图像左上角的点的坐标。Creates the coordinates of a point at which to draw the upper-left corner of the image.

  • 将未缩放的图像绘制到屏幕上。Draws the unscaled image to the screen.

public:
   void DrawImage2Float( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create coordinates for upper-left corner of image.
      float x = 100.0F;
      float y = 100.0F;

      // Draw image to screen.
      e->Graphics->DrawImage( newImage, x, y );
   }
public void DrawImage2Float(PaintEventArgs e)
{
             
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create coordinates for upper-left corner of image.
    float x = 100.0F;
    float y = 100.0F;
             
    // Draw image to screen.
    e.Graphics.DrawImage(newImage, x, y);
}
Public Sub DrawImage2Float(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create coordinates for upper-left corner of image.
    Dim x As Single = 100.0F
    Dim y As Single = 100.0F

    ' Draw image to screen.
    e.Graphics.DrawImage(newImage, x, y)
End Sub

注解

Image 存储像素宽度值和水平分辨率值(每英寸点数)。An Image stores a value for pixel width and a value for horizontal resolution (dots per inch). 图像的物理宽度(以英寸为单位)是像素宽度除以水平分辨率。The physical width, measured in inches, of an image is the pixel width divided by the horizontal resolution. 例如,像素宽度为216、水平分辨率为72点/英寸的图像的物理宽度为3英寸。For example, an image with a pixel width of 216 and a horizontal resolution of 72 dots per inch has a physical width of 3 inches. 类似的备注适用于像素高度和物理高度。Similar remarks apply to pixel height and physical height.

此方法使用其物理尺寸绘制图像,因此,无论显示设备的分辨率(每英寸点数)如何,图像的大小都将以英寸为单位。This method draws an image using its physical size, so the image will have its correct size in inches regardless of the resolution (dots per inch) of the display device. 例如,假设某个图像的像素宽度为216,水平分辨率为每英寸72点。For example, suppose an image has a pixel width of 216 and a horizontal resolution of 72 dots per inch. 如果调用此方法以将该图像绘制到分辨率为96点/英寸的设备上,则呈现的图像的像素宽度将为(216/72) * 96 = 288。If you call this method to draw that image on a device that has a resolution of 96 dots per inch, the pixel width of the rendered image will be (216/72)*96 = 288.

另请参阅

DrawImage(Image, Point[], Rectangle, GraphicsUnit, ImageAttributes)

在指定位置绘制指定的 Image 的指定部分。Draws the specified portion of the specified Image at the specified location.

public:
 void DrawImage(System::Drawing::Image ^ image, cli::array <System::Drawing::Point> ^ destPoints, System::Drawing::Rectangle srcRect, System::Drawing::GraphicsUnit srcUnit, System::Drawing::Imaging::ImageAttributes ^ imageAttr);
public void DrawImage (System.Drawing.Image image, System.Drawing.Point[] destPoints, System.Drawing.Rectangle srcRect, System.Drawing.GraphicsUnit srcUnit, System.Drawing.Imaging.ImageAttributes imageAttr);
member this.DrawImage : System.Drawing.Image * System.Drawing.Point[] * System.Drawing.Rectangle * System.Drawing.GraphicsUnit * System.Drawing.Imaging.ImageAttributes -> unit

参数

image
Image

要绘制的 ImageImage to draw.

destPoints
Point[]

由三个 Point 结构组成的数组,这三个结构定义一个平行四边形。Array of three Point structures that define a parallelogram.

srcRect
Rectangle

Rectangle 结构,它指定 image 对象中要绘制的部分。Rectangle structure that specifies the portion of the image object to draw.

srcUnit
GraphicsUnit

GraphicsUnit 枚举的成员,它指定 srcRect 参数所用的度量单位。Member of the GraphicsUnit enumeration that specifies the units of measure used by the srcRect parameter.

imageAttr
ImageAttributes

ImageAttributes,它指定 image 对象的重新着色和伽玛信息。ImageAttributes that specifies recoloring and gamma information for the image object.

例外

imagenullimage is null.

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  • 在示例的文件夹中创建 SampImag JPEG 文件中的图像。Creates an image from a JPEG file SampImag.jpg in the folder of the example.

  • 创建定义要在其中绘制图像的平行四边形的点。Creates points that define a parallelogram in which to draw the image.

  • 创建矩形以选择要绘制的图像部分。Creates a rectangle to select the portion of the image to draw.

  • 将图形绘图单位设置为像素。Sets the graphics drawing unit to pixel.

  • 将原始图像绘制到屏幕上。Draws the original image to the screen.

  • 创建一个要在其中绘制调整后的图像的附加平行四边形。Creates an additional parallelogram in which to draw an adjusted image.

  • 创建并设置调整后的图像的属性,使其具有比平时更大的伽玛值。Creates and sets the attributes of the adjusted image to have a larger-than-usual gamma value.

  • 在屏幕上绘制调整后的图像。Draws the adjusted image to the screen.

对于原始的、unadjusted 的平行四边形,位置在屏幕上定位图像,而矩形的大小和平行四边形的大小和形状决定了所绘制图像的缩放和切变。For the original, unadjusted parallelogram, the position locates the image on the screen, and the size of the rectangle and the size and shape of the parallelogram determines the scaling and shearing of the drawn image.

private:
   void DrawImageParaRectAttrib( PaintEventArgs^ e )
   {
      // Create image.
      Image^ newImage = Image::FromFile( "SampImag.jpg" );

      // Create parallelogram for drawing image.
      Point ulCorner1 = Point(100,100);
      Point urCorner1 = Point(325,100);
      Point llCorner1 = Point(150,250);
      array<Point>^ destPara1 = {ulCorner1,urCorner1,llCorner1};

      // Create rectangle for source image.
      Rectangle srcRect = Rectangle(50,50,150,150);
      GraphicsUnit units = GraphicsUnit::Pixel;

      // Draw original image to screen.
      e->Graphics->DrawImage( newImage, destPara1, srcRect, units );

      // Create parallelogram for drawing adjusted image.
      Point ulCorner2 = Point(325,100);
      Point urCorner2 = Point(550,100);
      Point llCorner2 = Point(375,250);
      array<Point>^ destPara2 = {ulCorner2,urCorner2,llCorner2};

      // Create image attributes and set large gamma.
      ImageAttributes^ imageAttr = gcnew ImageAttributes;
      imageAttr->SetGamma( 4.0F );

      // Draw adjusted image to screen.
      e->Graphics->DrawImage( newImage, destPara2, srcRect, units, imageAttr );
   }
private void DrawImageParaRectAttrib(PaintEventArgs e)
{
    // Create image.
    Image newImage = Image.FromFile("SampImag.jpg");
             
    // Create parallelogram for drawing image.
    Point ulCorner1 = new Point(100, 100);
    Point urCorner1 = new Point(325, 100);
    Point llCorner1 = new Point(150, 250);
    Point[] destPara1 = {ulCorner1, urCorner1, llCorner1};
             
    // Create rectangle for source image.
    Rectangle srcRect = new Rectangle(50, 50, 150, 150);
    GraphicsUnit units = GraphicsUnit.Pixel;
             
    // Draw original image to screen.
    e.Graphics.DrawImage(newImage, destPara1, srcRect, units);
             
    // Create parallelogram for drawing adjusted image.
    Point ulCorner2 = new Point(325, 100);
    Point urCorner2 = new Point(550, 100);
    Point llCorner2 = new Point(375, 250);
    Point[] destPara2 = {ulCorner2, urCorner2, llCorner2};
             
    // Create image attributes and set large gamma.
    ImageAttributes imageAttr = new ImageAttributes();
    imageAttr.SetGamma(4.0F);
             
    // Draw adjusted image to screen.
    e.Graphics.DrawImage(newImage, destPara2, srcRect, units, imageAttr);
}
Private Sub DrawImageParaRectAttrib(ByVal e As PaintEventArgs)

    ' Create image.
    Dim newImage As Image = Image.FromFile("SampImag.jpg")

    ' Create parallelogram for drawing image.
    Dim ulCorner1 As New Point(100, 100)
    Dim urCorner1 As New Point(325, 100)
    Dim llCorner1 As New Point(150, 250)
    Dim destPara1 As Point() = {ulCorner1, urCorner1, llCorner1}

    ' Create rectangle for source image.
    Dim srcRect As New Rectangle(50, 50, 150, 150)
    Dim units As GraphicsUnit = GraphicsUnit.Pixel

    ' Draw original image to screen.
    e.Graphics.DrawImage(newImage, destPara1, srcRect, units)

    ' Create parallelogram for drawing adjusted image.
    Dim ulCorner2 As New Point(325, 100)
    Dim urCorner2 As New Point(550, 100)
    Dim llCorner2 As New Point(375, 250)
    Dim destPara2 As Point() = {ulCorner2, urCorner2, llCorner2}

    ' Create image attributes and set large gamma.
    Dim imageAttr As New ImageAttributes
    imageAttr.SetGamma(4.0F)

    ' Draw adjusted image to screen.
    e.Graphics.DrawImage(newImage, destPara2, srcRect, units, _
    imageAttr)
End Sub

注解

destPoints 参数指定平行四边形的三个点。The destPoints parameter specifies three points of a parallelogram. 这三个 Point 结构表示平行四边形的左上角、右上角和左下角。The three Point structures represent the upper-left, upper-right, and lower-left corners of the parallelogram. 第四个点是从前三个位置推断来形成平行四边形。The fourth point is extrapolated from the first three to form a parallelogram.

srcRect 参数指定要绘制的image 对象的矩形部分。The srcRect parameter specifies a rectangular portion of theimage object to draw. 对此部分进行缩放和剪切,以适合 destPoints 参数所指定的平行四边形。This portion is scaled and sheared to fit inside the parallelogram specified by the destPoints parameter.

另请参阅

适用于