2.3.1.7 EMR_STRETCHDIBITS Record

The EMR_STRETCHDIBITS record specifies a block transfer of pixels from a source bitmap to a destination rectangle, optionally in combination with a brush pattern, according to a specified raster operation, stretching or compressing the output to fit the dimensions of the destination, if necessary.

Fields not specified in this section are specified in section 2.3.1.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Type

Size

Bounds

...

...

...

xDest

yDest

xSrc

ySrc

cxSrc

cySrc

offBmiSrc

cbBmiSrc

offBitsSrc

cbBitsSrc

UsageSrc

BitBltRasterOperation

cxDest

cyDest

BitmapBuffer (variable)

...

Type (4 bytes): An unsigned integer that identifies this record type as EMR_STRETCHDIBITS. This value is 0x00000051.

Bounds (16 bytes): A RectL object ([MS-WMF] section 2.2.2.19) that specifies the destination bounding rectangle in logical coordinates. If the intersection of this rectangle with the current clipping regions (section 3.1.1.2.1) in the playback device context (section 3.1) is empty, this record has no effect.

xDest (4 bytes): A signed integer that specifies the logical x-coordinate of the upper-left corner of the destination rectangle.

yDest (4 bytes): A signed integer that specifies the logical y-coordinate of the upper-left corner of the destination rectangle.

xSrc (4 bytes): A signed integer that specifies the x-coordinate in pixels of the upper-left corner of the source rectangle.

ySrc (4 bytes): A signed integer that specifies the y-coordinate in pixels of the upper-left corner of the source rectangle.

cxSrc (4 bytes): A signed integer that specifies the width in pixels of the source rectangle.

cySrc (4 bytes): A signed integer that specifies the height in pixels of the source rectangle.

offBmiSrc (4 bytes): An unsigned integer that specifies the offset in bytes from the start of this record to the source bitmap header.

cbBmiSrc (4 bytes): An unsigned integer that specifies the size in bytes, of the source bitmap header.

offBitsSrc (4 bytes): An unsigned integer that specifies the offset in bytes, from the start of this record to the source bitmap bits.

cbBitsSrc (4 bytes): An unsigned integer that specifies the size in bytes, of the source bitmap bits.

UsageSrc (4 bytes): An unsigned integer that specifies how to interpret values in the color table in the source bitmap header. This value is in the DIBColors enumeration (section 2.1.9).

BitBltRasterOperation (4 bytes): An unsigned integer that specifies a raster operation code. These codes define how the color data of the source rectangle is to be combined with the color data of the destination rectangle and optionally a brush pattern, to achieve the final color.

This value is in the Ternary Raster Operation enumeration ([MS-WMF] section 2.1.1.31).

cxDest (4 bytes): A signed integer that specifies the logical width of the destination rectangle.

cyDest (4 bytes): A signed integer that specifies the logical height of the destination rectangle.

BitmapBuffer (variable): A buffer containing the source bitmap, which is not required to be contiguous with the fixed portion of the EMR_STRETCHDIBITS record. Thus, fields in this buffer that are labeled "UndefinedSpace" are optional and MUST be ignored.

If the raster operation specified by BitBltRasterOperation does not require a source bitmap, the source bitmap can be omitted.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

UndefinedSpace1 (variable, optional)

...

BmiSrc (variable)

...

UndefinedSpace2 (variable, optional)

...

BitsSrc (variable)

...

BmiSrc (variable): The source bitmap header.

BitsSrc (variable): The source bitmap bits.

This record supports source images in JPEG and PNG formats. The Compression field in the source bitmap header specifies the image format.

If the signs of the source and destination height and width fields differ, this record specifies a mirror-image copy of the source bitmap to the destination. That is, if cxSrc and cxDest have different signs, a mirror image of the source bitmap along the x-axis is specified. If cySrc and cyDest have different signs, a mirror image of the source bitmap along the y-axis is specified.

See section 2.3.1 for more bitmap record types.