2.3.4.2 EmfPlusDrawArc Record

The EmfPlusDrawArc record specifies drawing the arc of an ellipse.


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

StartAngle

SweepAngle

RectData (variable)

...

Type (2 bytes): An unsigned integer that identifies this record type as EmfPlusDrawArc from the RecordType enumeration. The value MUST be 0x4012.

Flags (2 bytes): An unsigned integer that provides information about how the operation is to be performed, and about the structure of the record.


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

X

C

X

X

X

X

X

X

ObjectID

X (1 bit): Reserved and MUST be ignored.

C (1 bit): This bit indicates whether the data in the RectData field is compressed.

If set, RectData contains an EmfPlusRect object. If clear, RectData contains an EmfPlusRectF object.

ObjectID (1 byte): The index of an EmfPlusPen object in the EMF+ Object Table to draw the arc. The value MUST be zero to 63, inclusive.

Size (4 bytes): An unsigned integer that specifies the 32-bit-aligned number of bytes in the entire record, including the 12-byte record header and record-specific data. For this record type, the value MUST be one of the following:

Value

Meaning

0x0000001C

If the C bit is set in the Flags field.

0x00000024

If the C bit is clear in the Flags field.

DataSize (4 bytes): An unsigned integer that specifies the 32-bit-aligned number of bytes of record-specific data that follows. For this record type, the value MUST be one of the following:

Value

Meaning

0x00000010

If the C bit is set in the Flags field.

0x00000018

If the C bit is clear in the Flags field.

StartAngle (4 bytes): A non-negative floating-point value that specifies the angle between the x-axis and the starting point of the arc. Any value is acceptable, but it MUST be interpreted modulo 360, with the result that is used being in the range 0.0 inclusive to 360.0 exclusive.

SweepAngle (4 bytes): A floating-point value that specifies the extent of the arc to draw, as an angle in degrees measured from the starting point defined by the StartAngle value. Any value is acceptable, but it MUST be clamped to -360.0 to 360.0 inclusive. A positive value indicates that the sweep is defined in a clockwise direction, and a negative value indicates that the sweep is defined in a counter-clockwise direction.

RectData (variable): Either an EmfPlusRect or EmfPlusRectF object that defines the bounding box of the ellipse that is collinear with the arc. This rectangle defines the position, size, and shape of the arc. The type of object in this field is specified by the value of the Flags field.

See section 2.3.4 for the specification of additional drawing record types.