Beispiel 2 — Kreis mit Farbe und Rahmen
Ein Kreis mit Füllfarbe und farbigem Rahmen. Zeigt, wie man einen perfekten Kreis positioniert (Mittelpunkt statt Ecke) und einen sichtbaren Rahmen setzt.
Ergebnis
Code
/* PARAMS */
float cx = 200f; // Mittelpunkt X
float cy = 200f; // Mittelpunkt Y
float size = 150f; // Durchmesser
var fill = System.Drawing.Color.FromArgb(52, 152, 219);
var line = System.Drawing.Color.FromArgb(41, 128, 185);
/* END PARAMS */
var oCircle = ppptools.AddOval(cx - size/2f, cy - size/2f, size, size);
oCircle.Name = "MyCircle";
oCircle.Fill.ForeColor.RGB =
System.Drawing.ColorTranslator.ToOle(fill);
oCircle.Fill.Transparency = 0f;
oCircle.Line.Weight = 2f;
oCircle.Line.ForeColor.RGB =
System.Drawing.ColorTranslator.ToOle(line);
Schritt-für-Schritt-Erklärung
1. Kreis vs. Oval — msoShapeOval
PowerPoint kennt keinen eigenen „Kreis"-Typ. msoShapeOval erzeugt ein Oval. Wenn width == height, wird es ein perfekter Kreis.
ppptools.AddOval(
cx - size/2f, cy - size/2f, // obere linke Ecke
size, size); // Breite = Höhe → Kreis
2. Mittelpunkt-Koordinaten
AddShape erwartet die obere linke Ecke (nicht den Mittelpunkt). Um einen Kreis am Punkt (cx, cy) zu zentrieren, rechnet man:
left = cx - size/2
top = cy - size/2
Beispiel: cx=200, cy=200, size=150 → left=125, top=125
Das ist ein häufiges Muster: Formen werden oft geometrisch über ihren Mittelpunkt definiert, aber PowerPoint braucht die Ecke.
3. Rahmenfarbe und -stärke
oCircle.Line.Weight = 2f; // Stärke in PT
oCircle.Line.ForeColor.RGB =
System.Drawing.ColorTranslator.ToOle(line);
Im Gegensatz zu Beispiel 1 (kein Rahmen) wird hier ein sichtbarer Rahmen gesetzt. Line.Weight ist die Stärke in Points. Line.ForeColor.RGB ist die Rahmenfarbe — getrennt von Fill.ForeColor.
| Eigenschaft | Bedeutung |
|---|---|
Line.Weight |
Rahmenstärke in PT |
Line.ForeColor.RGB |
Rahmenfarbe (OLE-Format) |
Line.Visible |
msoTrue / msoFalse |
Fill.ForeColor.RGB |
Füllfarbe (OLE-Format) |
Fill.Transparency |
0.0 (opak) … 1.0 (transparent) |
Besonderheiten dieses Beispiels
- Kein Kreis-Typ —
msoShapeOvalmit gleicher Breite/Höhe ergibt einen perfekten Kreis. - Mittelpunkt → Ecke-Umrechnung —
cx - size/2f/cy - size/2fist ein Standardmuster für alle zentrierten Formen. 2fstatt2— Float-Literal nötig, daLine.Weighteinfloaterwartet.2würde in C# alsintinterpretiert und eine implizite Konvertierung auslösen.- Zwei separate Farben: eine für die Füllung (
fill), eine für den Rahmen (line).
Zurück: Beispiel 1 — Rechteck · Weiter: Beispiel 3 — Union