Beispiel: Pfeil mit Adjustments

Erstellt: 2026-05-31 · Aktualisiert: 2026-05-31

PPPTools-Referenz

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.01.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