a:prstGeom (Preset Geometry)
Specifies a predefined geometric shape (rectangle, circle, star, arrow, etc.) for a DrawingML shape.
Child elements
Description
a:prstGeom defines a shape using one of the preset geometry types (built-in shapes). It is defined in ECMA-376 Part 1 §20.1.7.1.
Preset geometries include:
- Basic:
rect,ellipse,diamond,triangle,rtTriangle - Arrows:
leftArrow,rightArrow,upArrow,downArrow - Symbols:
star5,star6,star7,star8,plus,x,cross - Callouts:
callout1,callout2,callout3 - Many others:
pentagon,hexagon,octagon,parallelogram, etc.
The prst attribute specifies which preset shape to use. Adjustment lists (a:avLst) allow fine-tuning of shape proportions.
Attributes
| Attribute | Type | Possible Values | Description |
|---|---|---|---|
prst |
ST_PresetGeometryVal |
Rectangle, ellipse, star5, arrow, and many others (100+ preset types) | Preset geometry type for the shape. |
Examples
Rectangle Preset Geometry
<a:prstGeom prst="rect">
<a:avLst/>
</a:prstGeom>
using DocumentFormat.OpenXml.Drawing;
var presetGeometry = new PresetGeometry { Preset = ShapeTypeValues.Rectangle };
presetGeometry.Append(new AdjustValueList());
Five-Point Star with Adjustment Values
<a:prstGeom prst="star5">
<a:avLst>
<a:adj rad="100000"/>
</a:avLst>
</a:prstGeom>
var presetGeometry = new PresetGeometry { Preset = ShapeTypeValues.Star5 };
var adjLst = new AdjustValueList();
adjLst.Append(new AdjustValue { Val = 100000 }); // Star point sharpness
presetGeometry.Append(adjLst);
Right Arrow Preset Geometry
<a:prstGeom prst="rightArrow">
<a:avLst/>
</a:prstGeom>
var presetGeometry = new PresetGeometry { Preset = ShapeTypeValues.RightArrow };
presetGeometry.Append(new AdjustValueList());
Rounded Rectangle with Corner Rounding
<a:prstGeom prst="roundRect">
<a:avLst>
<a:adj rad="50800"/>
</a:avLst>
</a:prstGeom>
var presetGeometry = new PresetGeometry { Preset = ShapeTypeValues.RoundRectangle };
var adjLst = new AdjustValueList();
adjLst.Append(new AdjustValue { Val = 50800 }); // Corner radius
presetGeometry.Append(adjLst);
Notes
- The
a:avLst(adjustment value list) is required but can be empty for shapes without adjustable parameters. - Common preset types include
rect,ellipse,diamond,triangle,star5,leftArrow,rightArrow,pentagon,hexagon,plus,cross. - Each preset geometry type supports different adjustment parameters; refer to the ECMA-376 spec for type-specific adjustments.
- The shape dimensions are controlled by
a:xfrm(transform) in the parenta:spPrelement, not by the geometry itself. - Preset geometries are resolution-independent; they scale smoothly to any size.
- Over 100 preset shape types are available in the ECMA-376 standard.