2.3.4 Drawing Record Types

The drawing record types specify graphics output. The following are EMF+ drawing record types:

Name

Section

Description

EmfPlusClear

2.3.4.1

Clears the output coordinate space and initializes it with a background color and transparency.

EmfPlusDrawArc

2.3.4.2

Draws the arc of an ellipse.

EmfPlusDrawBeziers

2.3.4.3

Draws a sequence of connected Bezier curves.

EmfPlusDrawClosedCurve

2.3.4.4

Draws a closed cardinal spline.

EmfPlusDrawCurve

2.3.4.5

Draws a cardinal spline.

EmfPlusDrawDriverString

2.3.4.6

Outputs text with character positions.

EmfPlusDrawEllipse

2.3.4.7

Draws an ellipse.

EmfPlusDrawImage

2.3.4.8

Draws a scaled image.

EmfPlusDrawImagePoints

2.3.4.9

Draws a scaled image inside a parallelogram.

EmfPlusDrawLines

2.3.4.10

Draws a series of connected lines.

EmfPlusDrawPath

2.3.4.11

Draws a graphics path.

EmfPlusDrawPie

2.3.4.12

Draws a section of the interior of an ellipse.

EmfPlusDrawRects

2.3.4.13

Draws a series of rectangles.

EmfPlusDrawString

2.3.4.14

Outputs text with string formatting.

EmfPlusFillClosedCurve

2.3.4.15

Draws the interior of a closed cardinal spline.

EmfPlusFillEllipse

2.3.4.16

Draws the interior of an ellipse.

EmfPlusFillPath

2.3.4.17

Draws the interior of a graphics path.

EmfPlusFillPie

2.3.4.18

Draws a section of the interior of an ellipse.

EmfPlusFillPolygon

2.3.4.19

Draws the interior of a polygon.

EmfPlusFillRects

2.3.4.20

Draws the interiors of a series of rectangles.

EmfPlusFillRegion

2.3.4.21

Draws the interior of a graphics region.

The generic structure of EMF+ drawing records is specified as follows:


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

Flags

Size

DataSize

RecordData (variable)

...

Type (2 bytes): An unsigned integer that identifies the record type. The drawing record types are listed below. See the table above for descriptions of these records.

Name

Value

EmfPlusClear

0x4009

EmfPlusFillRects

0x400A

EmfPlusDrawRects

0x400B

EmfPlusFillPolygon

0x400C

EmfPlusDrawLines

0x400D

EmfPlusFillEllipse

0x400E

EmfPlusDrawEllipse

0x400F

EmfPlusFillPie

0x4010

EmfPlusDrawPie

0x4011

EmfPlusDrawArc

0x4012

EmfPlusFillRegion

0x4013

EmfPlusFillPath

0x4014

EmfPlusDrawPath

0x4015

EmfPlusFillClosedCurve

0x4016

EmfPlusDrawClosedCurve

0x4017

EmfPlusDrawCurve

0x4018

EmfPlusDrawBeziers

0x4019

EmfPlusDrawImage

0x401A

EmfPlusDrawImagePoints

0x401B

EmfPlusDrawString

0x401C

EmfPlusDrawDriverString

0x4036

Flags (2 bytes): An unsigned integer that contains information for some records on how the operation is to be performed and on the structure of the record.

Size (4 bytes): An unsigned integer that defines the 32-bit-aligned size of the entire record in bytes, including the 12-byte record header and the record-specific data.

DataSize (4 bytes): An unsigned integer that defines the 32-bit-aligned number of bytes of data in the RecordData field that follows. This number does not include the 12-byte record header.

RecordData (variable): An optional, variable-length array of bytes that, if present, defines the data specific to individual records. For specifications of the additional information, if any, which is contained within this field, see individual record definitions.