Graphics.DrawImage(Image*, RectF*, Matrix*, Effect*, ImageAttributes*, Unit*) method

Applies to: desktop apps only

The method draws a portion of an image after applying a specified effect.


Status DrawImage(
  [in]  Image *image,
  [in]  RectF *sourceRect,
  [in]  Matrix *xForm,
  [in]  Effect *effect,
  [in]  ImageAttributes *imageAttributes,
  [in]  Unit *srcUnit


image [in]

Type: Image*

Pointer to an Image object that specifies the image to be drawn.

sourceRect [in]

Type: RectF*

Pointer to a RectF object that specifies the portion of the image to be drawn.

xForm [in]

Type: Matrix*

Pointer to a Matrix object that specifies the parallelogram in which the image portion is rendered. The destination parallelogram is calculated by applying the affine transformation stored in the matrix to the source rectangle.

effect [in]

Type: Effect*

Pointer to a instance of a descendant of the Effect class. The descendant specifies an effect or adjustment (for example, a change in contrast) that is applied to the image before rendering. The image is not permanently altered by the effect.

imageAttributes [in]

Type: ImageAttributes*

Pointer to an ImageAttributes object that specifies color adjustments to be applied when the image is rendered. Can be NULL.

srcUnit [in]

Type: Unit*

Element of the Unit enumeration that specifies the unit of measure for the source rectangle.

Return value


Type: Status

If the method succeeds, it returns Ok, which is an element of the Status enumeration.

If the method fails, it returns one of the other elements of the Status enumeration.


The following example increases the contrast of an image and then draws a portion of the image transformed to fill a parallelogram. The source rectangle specifies that only the upper-left one-inch square of the image should be adjusted and rendered. The matrix stores an affine transformation that maps the source rectangle to a parallelogram. The last two arguments passed to the Matrix constructor specify that the upper-left corner of that parallelogram is 3 inches to the right and 2 inches below the upper-left corner of the window's client area.

VOID Example_DrawImageRM(HDC hdc)
   Graphics graphics(hdc);
   Image myImage(L"Photo.jpg");

   REAL srcWidth = (REAL)myImage.GetWidth();
   REAL srcHeight = (REAL)myImage.GetHeight();
   RectF srcRect(0.0f, 0.0f, 1.0f, 1.0f);
   Matrix myMatrix(2.0f, 0.2f, 0.3f, 1.0f, 3.0f, 2.0f);

   BrightnessContrastParams briConParams;
   briConParams.brightnessLevel = 0;
   briConParams.contrastLevel = 30;
   BrightnessContrast briCon;

   // Draw the image with increased contrast and transformed to
   // fill a parallelogram.
   graphics.DrawImage(&myImage, &srcRect, &myMatrix, &briCon, NULL, UnitInch);


Minimum supported client

Windows XP, Windows 2000 Professional

Minimum supported server

Windows 2000 Server


GDI+ 1.0


Gdiplusgraphics.h (include Gdiplus.h)





See also

Loading and Displaying Bitmaps
Drawing, Positioning, and Cloning Images



Send comments about this topic to Microsoft

Build date: 3/6/2012

Community Additions