Beispiel: Pfeil mit Adjustments
Dieses Beispiel zeigt, wie Block-Pfeile erstellt und über die Adjustments-Collection
präzise angepasst werden — Schaftbreite, Pfeilkopfgrösse und weitere geometrische Parameter.
Was sind Adjustments?
Die meisten AutoShapes haben ein oder mehrere Adjustment-Handles — in PowerPoint erscheinen diese als kleine gelbe Quadrate/Rauten, wenn man eine Form auswählt. Sie erlauben es, die Geometrie der Form direkt durch Ziehen zu verändern — ohne Edit-Points zu brauchen.
Im Code sind diese Handles über oShape.Adjustments[n] zugänglich (1-basiert).
dynamic oArrow = ppptools.AddShape(MsoAutoShapeType.msoShapeRightArrow, 100, 150, 250, 100);
// Anzahl Adjustments lesen
int count = (int)oArrow.Adjustments.Count; // → 2 für RightArrow
// Wert lesen und setzen
float val1 = (float)oArrow.Adjustments[1]; // aktueller Wert
oArrow.Adjustments[1] = 0.7f; // neuen Wert setzen
Werte sind normiert (typisch 0.0–1.0), aber die genaue Bedeutung ist je Shape unterschiedlich.
Microsoft dokumentiert diese Werte nicht pro Shape; die zuverlässigste Methode ist der
Macro Recorder oder
experimentelles Ausprobieren.
Maximale Anzahl Adjustments
Ein Shape kann bis zu 8 Adjustments haben. Quelle: Microsoft Docs — Adjustments-Objekt
Adjustment-Kategorien
PowerPoint-Shapes mit Adjustments lassen sich in wenige Familien einteilen — innerhalb einer Familie verhalten sich die Handles ähnlich:
Basis-Geometrien (abgerundete/modifizierbare Formen)
Shapes wie Rounded Rectangle, Donut, Hexagon oder Diamond haben meist 1 Adjustment:
| Shape-Familie | Was der Handle steuert |
|---|---|
| Abgerundetes Rechteck | Eckradius — ziehen nach innen/aussen vergrössert/verkleinert die Rundung |
| Donut (Ring) | Dicke des inneren Rings — steuert wie breit oder schmal der Ringkanal ist |
| Hexagon / Sechseck | Verschiebt die Eckpunkte — von regulärem Sechseck bis fast-Rechteck |
| Zickzack / Welle | Tiefe der Zackung oder Wellenamplitude |
Block-Pfeile und Chevrons
Diese Familie hat oft 2 Handles: einen für den Schaft, einen für den Pfeilkopf.
| Shape-Familie | [1] |
[2] |
|---|---|---|
| Einfache Blockpfeile (Rechts/Links/Oben/Unten) | Wo der Pfeilkopf beginnt | Schaftbreite |
| U-Pfeil / Split-Pfeil | Schaftbreite | Halslänge |
| Chevron | Tiefe der Kerbe | — |
Sterne und Bänder
Sterne (5-zackig, 6-zackig etc.) haben 1 Adjustment: den inneren Radius. - Handle nach innen ziehen → Zacken spitzer und länger (schlanker Stern) - Handle nach aussen ziehen → Zacken kürzer, Form ähnelt einem Badge oder Kreis
Bänder und Scrolls steuern die Tiefe und den Winkel der Falten oder Einrollungen.
Callouts (Sprechblasen)
Rechteck-, Oval- und Cloud-Callouts haben typisch 2–4 Adjustments für die Zeigerlänge
und -position. Die Werte können auch ausserhalb von 0–1 liegen (z.B. 1.3 = Zeiger
über den Shape-Rand hinaus).
Smiley und Action Buttons
- Smiley Face: 1 Adjustment steuert die Kurve — von Lächeln über gerade Linie bis Grimasse
- Action Buttons (Haus, Uhr etc.): Skalierungs-Adjustments für ikonspezifische Proportionen
Mehr als 1 Handle möglich
Einige Shapes (z.B. Kreispfeil msoShapeCircularArrow) haben bis zu 5 Adjustments —
z.B. Start- und Endwinkel, Schaftbreite, Pfeilkopfgrösse. Den Macro Recorder nutzen
um alle Handles eines bestimmten Shapes zu entdecken.
Block-Pfeil rechts (msoShapeRightArrow)
Der RightArrow hat 2 Adjustments:
| Index | Steuert | Wertebereich | Bedeutung |
|---|---|---|---|
[1] |
Wo der Pfeilkopf beginnt (horizontal) | 0.0–1.0 |
kleiner = breiterer Pfeilkopf |
[2] |
Schafthöhe (vertikal) | 0.0–0.5 |
kleiner = dickerer Schaft |
// Standardpfeil
dynamic oDefault = ppptools.AddShape(MsoAutoShapeType.msoShapeRightArrow, 50, 50, 250, 80);
ppptools.SetFill(oDefault, Color.FromArgb(68, 114, 196));
ppptools.HideLine(oDefault);
// Schlanker Pfeil: schmaler Schaft, kleiner Pfeilkopf
dynamic oSlim = ppptools.AddShape(MsoAutoShapeType.msoShapeRightArrow, 50, 160, 250, 80);
oSlim.Adjustments[1] = 0.75f; // Pfeilkopf beginnt bei 75 % der Länge
oSlim.Adjustments[2] = 0.15f; // Schaft = 15 % der Gesamthöhe
ppptools.SetFill(oSlim, Color.FromArgb(112, 173, 71));
ppptools.HideLine(oSlim);
// Breiter Pfeil: dicker Schaft, grosser Pfeilkopf
dynamic oBold = ppptools.AddShape(MsoAutoShapeType.msoShapeRightArrow, 50, 270, 250, 80);
oBold.Adjustments[1] = 0.5f; // Pfeilkopf bei 50 % der Länge
oBold.Adjustments[2] = 0.4f; // Schaft = 40 % der Gesamthöhe
ppptools.SetFill(oBold, Color.FromArgb(255, 102, 0));
ppptools.HideLine(oBold);
Chevron (msoShapeChevron)
Der Chevron hat 1 Adjustment:
| Index | Steuert | Wertebereich | Bedeutung |
|---|---|---|---|
[1] |
Tiefe der Kerbe (horizontaler Einschnitt) | 0.0–1.0 |
0 = kein Einschnitt (Rechteck), 1 = spitze Pfeilform |
// Prozessschritte als Chevron-Kette
string[] labels = { "Analyse", "Design", "Umsetzung", "Test" };
Color[] colors = {
Color.FromArgb(68, 114, 196),
Color.FromArgb(112, 173, 71),
Color.FromArgb(255, 192, 0),
Color.FromArgb(255, 102, 0)
};
for (int i = 0; i < labels.Length; i++)
{
float x = 40f + i * 160f;
dynamic oCh = ppptools.AddShape(MsoAutoShapeType.msoShapeChevron, x, 200, 175, 70);
oCh.Adjustments[1] = 0.5f; // mittlere Kerbtiefe
ppptools.SetFill(oCh, colors[i]);
ppptools.HideLine(oCh);
ppptools.SetText(oCh, labels[i], fontSize: 11f, color: Color.White, bold: true,
align: PowerPoint.PpParagraphAlignment.ppAlignCenter);
}
Pentagon-Pfeil (msoShapePentagon)
Pentagon hat 1 Adjustment (Tiefe der rechten Spitze):
dynamic oPent = ppptools.AddShape(MsoAutoShapeType.msoShapePentagon, 100, 100, 180, 70);
oPent.Adjustments[1] = 0.5f; // Standard: mittlere Spitze
ppptools.SetFill(oPent, Color.FromArgb(68, 114, 196));
ppptools.HideLine(oPent);
Abgerundetes Rechteck (msoShapeRoundedRectangle)
1 Adjustment: Eckradius.
| Index | Steuert | Wertebereich | Bedeutung |
|---|---|---|---|
[1] |
Eckradius | 0.0–0.5 |
0 = scharfe Ecken, 0.5 = maximale Rundung (Ellipse) |
// Leicht gerundete Card
dynamic oCard = ppptools.AddShape(MsoAutoShapeType.msoShapeRoundedRectangle, 100, 100, 200, 100);
oCard.Adjustments[1] = 0.05f; // dezente Rundung
ppptools.SetFill(oCard, Color.FromArgb(240, 240, 240));
ppptools.SetLine(oCard, Color.FromArgb(180, 180, 180), 1f);
// Stark gerundete Pill-Form
dynamic oPill = ppptools.AddShape(MsoAutoShapeType.msoShapeRoundedRectangle, 100, 230, 200, 60);
oPill.Adjustments[1] = 0.5f; // maximale Rundung
ppptools.SetFill(oPill, Color.FromArgb(68, 114, 196));
ppptools.HideLine(oPill);
ppptools.SetText(oPill, "Button", color: Color.White, bold: true,
align: PowerPoint.PpParagraphAlignment.ppAlignCenter);
Callout mit Adjustment (msoShapeRectangularCallout)
Callouts haben 2 Adjustments für die Position des Zeigers:
| Index | Steuert |
|---|---|
[1] |
Horizontale Position des Zeigers (relativ zur Box-Breite) |
[2] |
Vertikale Position des Zeigers (relativ zur Box-Höhe) |
dynamic oCallout = ppptools.AddShape(
MsoAutoShapeType.msoShapeRectangularCallout, 100, 100, 200, 100);
oCallout.Adjustments[1] = 1.3f; // Zeiger nach rechts aussen
oCallout.Adjustments[2] = 1.5f; // Zeiger nach unten
ppptools.SetFill(oCallout, Color.FromArgb(255, 242, 204));
ppptools.SetLine(oCallout, Color.FromArgb(200, 160, 0), 1.5f);
ppptools.SetText(oCallout, "Hinweis!", fontSize: 11f,
color: Color.FromArgb(100, 60, 0));
Adjustments-Referenz: Häufigste Shapes
| Shape | Enum | Adj-Count | [1] |
[2] |
|---|---|---|---|---|
| Block-Pfeil rechts | msoShapeRightArrow |
2 | Pfeilkopf-Start (0–1) | Schafthöhe (0–0.5) |
| Block-Pfeil links | msoShapeLeftArrow |
2 | wie RightArrow | wie RightArrow |
| Block-Pfeil oben | msoShapeUpArrow |
2 | Schaftbreite (0–0.5) | Pfeilkopf-Start (0–1) |
| Doppelpfeil | msoShapeLeftRightArrow |
2 | Pfeilkopfbreite (0–0.5) | Schafthöhe (0–0.5) |
| Chevron | msoShapeChevron |
1 | Kerbtiefe (0–1) | — |
| Pentagon-Pfeil | msoShapePentagon |
1 | Spitzentiefe (0–1) | — |
| Abger. Rechteck | msoShapeRoundedRectangle |
1 | Eckradius (0–0.5) | — |
| Rechteck-Callout | msoShapeRectangularCallout |
2 | Zeiger X | Zeiger Y |
| Oval-Callout | msoShapeOvalCallout |
2 | Zeiger X | Zeiger Y |
| Gebogener Pfeil | msoShapeBentArrow |
2 | Biegepunkt | Schaftbreite |
| Kreispfeil | msoShapeCircularArrow |
5 | Startwinkel | Endwinkel |
Unbekannte Adjustments ermitteln
Erstelle das Shape manuell in PowerPoint, ziehe die gelbe Raute und zeichne dabei ein Makro auf (Ansicht → Makros → Aufzeichnen). Der aufgezeichnete VBA-Code zeigt die genauen Adjustment-Werte.
Vollständiges Beispiel: Prozessdiagramm
// Drei verbundene Schritte mit Pfeil-Trenner
var steps = new[] {
("Eingabe", Color.FromArgb(68, 114, 196)),
("Verarbeit.", Color.FromArgb(112, 173, 71)),
("Ausgabe", Color.FromArgb(255, 102, 0))
};
float startX = 50f;
for (int i = 0; i < steps.Length; i++)
{
// Prozessbox
float bx = startX + i * 195f;
dynamic oBox = ppptools.AddShape(
MsoAutoShapeType.msoShapeRoundedRectangle, bx, 150, 140, 80);
oBox.Adjustments[1] = 0.06f;
ppptools.SetFill(oBox, steps[i].Item2);
ppptools.HideLine(oBox);
ppptools.SetText(oBox, steps[i].Item1,
color: Color.White, bold: true, fontSize: 12f,
align: PowerPoint.PpParagraphAlignment.ppAlignCenter);
// Verbindungspfeil (ausser nach letztem Element)
if (i < steps.Length - 1)
{
dynamic oArr = ppptools.AddShape(
MsoAutoShapeType.msoShapeRightArrow, bx + 145f, 170f, 45f, 40f);
oArr.Adjustments[1] = 0.6f; // Pfeilkopf bei 60 %
oArr.Adjustments[2] = 0.25f; // Schaft = 25 % der Höhe
ppptools.SetFill(oArr, Color.FromArgb(150, 150, 150));
ppptools.HideLine(oArr);
}
}
Zurück: PPPTools-Referenz · AutoShape-Typen