Benutzerdefinierte Form
Ändern einer Form mit Bearbeitungspunkten
Betrachten Sie ein Quadrat. In PowerPoint können Sie mit Bearbeitungspunkten
- die Ecke des Quadrats hinein oder heraus bewegen
- die Krümmung für eine Ecke oder einen Punkt festlegen
- neue Punkte zum Quadrat hinzufügen
- Punkte am Quadrat manipulieren usw.
Im Wesentlichen können Sie die beschriebenen Aufgaben auf jede Form anwenden. Mit Bearbeitungspunkten können Sie eine Form ändern oder eine neue Form aus einer vorhandenen Form erstellen.
Tipps zur Formbearbeitung
Bevor Sie mit der Bearbeitung von PowerPoint-Formen über Bearbeitungspunkte beginnen, sollten Sie diese Punkte zu Formen beachten:
- Eine Form (oder ihr Pfad) kann entweder geschlossen oder offen sein.
- Wenn eine Form geschlossen ist, fehlt ein Start- oder Endpunkt. Wenn eine Form offen ist, hat sie einen Anfang und ein Ende.
- Alle Formen bestehen aus mindestens 2 Ankerpunkten, die durch Linien miteinander verbunden sind.
- Eine Linie ist entweder gerade oder gekrümmt. Ankerpunkte bestimmen die Beschaffenheit der Linie.
- Ankerpunkte existieren als Eckenpunkte, gerade Punkte oder glatte Punkte:
- Ein Eckenpunkt ist ein Punkt, an dem 2 gerade Linien in einem Winkel zusammentreffen.
- Ein glatter Punkt ist ein Punkt, an dem 2 Griffe in einer geraden Linie liegen und die Segmente der Linie in einer sanften Kurve zusammenkommen. In diesem Fall sind alle Griffe vom Ankerpunkt durch einen gleichen Abstand getrennt.
- Ein gerader Punkt ist ein Punkt, an dem 2 Griffe in einer geraden Linie liegen und die Liniensegmente der Linie in einer sanften Kurve zusammenkommen. In diesem Fall müssen die Griffe nicht durch einen gleichen Abstand vom Ankerpunkt getrennt sein.
- Durch Verschieben oder Bearbeiten von Ankerpunkten (was den Winkel der Linien ändert) können Sie das Aussehen einer Form ändern.
Um PowerPoint-Formen über Bearbeitungspunkte zu bearbeiten, bietet Aspose.Slides die GeometryPath Klasse und die IGeometryPath Schnittstelle.
- Eine GeometryPath Instanz stellt einen Geometriepfad des IGeometryShape Objekts dar.
- Um den
GeometryPath
von derIGeometryShape
Instanz abzurufen, können Sie die IGeometryShape.GetGeometryPaths Methode verwenden. - Um den
GeometryPath
für eine Form festzulegen, können Sie diese Methoden verwenden: IGeometryShape.SetGeometryPath für feste Formen und IGeometryShape.SetGeometryPaths für kompositere Formen. - Um Segmente hinzuzufügen, können Sie die Methoden unter IGeometryPath verwenden.
- Mit den Eigenschaften IGeometryPath.Stroke und IGeometryPath.FillMode können Sie das Aussehen eines Geometriepfades festlegen.
- Mit der IGeometryPath.PathData Eigenschaft können Sie den Geometriepfad einer
GeometryShape
als ein Array von Pfadsegmenten abrufen. - Um auf zusätzliche Optionen zur Anpassung der Formgeometrie zuzugreifen, können Sie GeometryPath in GraphicsPath umwandeln.
- Verwenden Sie die Methoden
GeometryPathToGraphicsPath
undGraphicsPathToGeometryPath
(aus der ShapeUtil Klasse), umGeometryPath
inGraphicsPath
und umgekehrt umzuwandeln.
Einfache Bearbeitungsvorgänge
Dieser Python-Code zeigt Ihnen, wie Sie
Eine Linie am Ende eines Pfades hinzufügen:
line_to(point)
line_to(x, y)
Eine Linie an einer bestimmten Position auf einem Pfad hinzufügen:
line_to(point, index)
line_to(x, y, index)
Eine kubische Bezier-Kurve am Ende eines Pfades hinzufügen:
cubic_bezier_to(point1, point2, point3)
cubic_bezier_to(x1, y1, x2, y2, x3, y3)
Eine kubische Bezier-Kurve an der angegebenen Position auf einem Pfad hinzufügen:
cubic_bezier_to(point1, point2, point3, index)
cubic_bezier_to(x1, y1, x2, y2, x3, y3, index)
Eine quadratische Bezier-Kurve am Ende eines Pfades hinzufügen:
quadratic_bezier_to(point1, point2)
quadratic_bezier_to(x1, y1, x2, y2)
Eine quadratische Bezier-Kurve an einer bestimmten Position auf einem Pfad hinzufügen:
quadratic_bezier_to(point1, point2, index)
quadratic_bezier_to(x1, y1, x2, y2, index)
Einen bestimmten Bogen zu einem Pfad anhängen:
arc_to(width, height, startAngle, sweepAngle)
Die aktuelle Figur eines Pfades schließen:
close_figure()
Die Position für den nächsten Punkt festlegen:
move_to(point)
move_to(x, y)
Den Pfadsegment an einem bestimmten Index entfernen:
remove_at(index)
Fügen Sie benutzerdefinierte Punkte zur Form hinzu
- Erstellen Sie eine Instanz der GeometryShape Klasse und setzen Sie den ShapeType.Rectangle
- Holen Sie sich eine Instanz der GeometryPath Klasse von der Form.
- Fügen Sie einen neuen Punkt zwischen den beiden oberen Punkten auf dem Pfad hinzu.
- Fügen Sie einen neuen Punkt zwischen den beiden unteren Punkten auf dem Pfad hinzu.
- Wenden Sie den Pfad auf die Form an.
Dieser Python-Code zeigt Ihnen, wie Sie benutzerdefinierte Punkte zu einer Form hinzufügen:
import aspose.slides as slides
with slides.Presentation() as pres:
shape = pres.slides[0].shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 200, 100)
geometryPath = shape.get_geometry_paths()[0]
geometryPath.line_to(100, 50, 1)
geometryPath.line_to(100, 50, 4)
shape.set_geometry_path(geometryPath)
Punkte von der Form entfernen
- Erstellen Sie eine Instanz der GeometryShape Klasse und setzen Sie den ShapeType.Heart Typ.
- Holen Sie sich eine Instanz der GeometryPath Klasse von der Form.
- Entfernen Sie das Segment für den Pfad.
- Wenden Sie den Pfad auf die Form an.
Dieser Python-Code zeigt Ihnen, wie Sie Punkte von einer Form entfernen:
import aspose.slides as slides
with slides.Presentation() as pres:
shape = pres.slides[0].shapes.add_auto_shape(slides.ShapeType.HEART, 100, 100, 300, 300)
path = shape.get_geometry_paths()[0]
path.remove_at(2)
shape.set_geometry_path(path)
Eine benutzerdefinierte Form erstellen
- Berechnen Sie Punkte für die Form.
- Erstellen Sie eine Instanz der GeometryPath Klasse.
- Füllen Sie den Pfad mit den Punkten.
- Erstellen Sie eine Instanz der GeometryShape Klasse.
- Wenden Sie den Pfad auf die Form an.
Dieser Python-Code zeigt Ihnen, wie Sie eine benutzerdefinierte Form erstellen:
import aspose.slides as slides
import aspose.pydrawing as draw
import math
points = []
R = 100
r = 50
step = 72
for angle in range(-90, 270, step):
radians = angle * (math.pi / 180)
x = R * math.cos(radians)
y = R * math.sin(radians)
points.append(draw.PointF(x + R, y + R))
radians = math.pi * (angle + step / 2) / 180.0
x = r * math.cos(radians)
y = r * math.sin(radians)
points.append(draw.PointF(x + R, y + R))
starPath = slides.GeometryPath()
starPath.move_to(points[0])
for i in range(len(points)):
starPath.line_to(points[i])
starPath.close_figure()
with slides.Presentation() as pres:
shape = pres.slides[0].shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, R * 2, R * 2)
shape.set_geometry_path(starPath)
Erstellen einer zusammengesetzten benutzerdefinierten Form
- Erstellen Sie eine Instanz der GeometryShape Klasse.
- Erstellen Sie eine erste Instanz der GeometryPath Klasse.
- Erstellen Sie eine zweite Instanz der GeometryPath Klasse.
- Wenden Sie die Pfade auf die Form an.
Dieser Python-Code zeigt Ihnen, wie Sie eine zusammengesetzte benutzerdefinierte Form erstellen:
import aspose.slides as slides
import aspose.pydrawing as draw
with slides.Presentation() as pres:
shape = pres.slides[0].shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 200, 100)
geometryPath0 = slides.GeometryPath()
geometryPath0.move_to(0, 0)
geometryPath0.line_to(shape.width, 0)
geometryPath0.line_to(shape.width, shape.height/3)
geometryPath0.line_to(0, shape.height / 3)
geometryPath0.close_figure()
geometryPath1 = slides.GeometryPath()
geometryPath1.move_to(0, shape.height/3 * 2)
geometryPath1.line_to(shape.width, shape.height / 3 * 2)
geometryPath1.line_to(shape.width, shape.height)
geometryPath1.line_to(0, shape.height)
geometryPath1.close_figure()
shape.set_geometry_paths([ geometryPath0, geometryPath1])
Erstellen einer benutzerdefinierten Form mit abgerundeten Ecken
Dieser Python-Code zeigt Ihnen, wie Sie eine benutzerdefinierte Form mit abgerundeten Ecken (nach innen) erstellen:
import aspose.slides as slides
import aspose.pydrawing as draw
shapeX = 20
shapeY = 20
shapeWidth = 300
shapeHeight = 200
leftTopSize = 50
rightTopSize = 20
rightBottomSize = 40
leftBottomSize = 10
with slides.Presentation() as presentation:
childShape = presentation.slides[0].shapes.add_auto_shape(
slides.ShapeType.CUSTOM, shapeX, shapeY, shapeWidth, shapeHeight)
geometryPath = slides.GeometryPath()
point1 = draw.PointF(leftTopSize, 0)
point2 = draw.PointF(shapeWidth - rightTopSize, 0)
point3 = draw.PointF(shapeWidth, shapeHeight - rightBottomSize)
point4 = draw.PointF(leftBottomSize, shapeHeight)
point5 = draw.PointF(0, leftTopSize)
geometryPath.move_to(point1)
geometryPath.line_to(point2)
geometryPath.arc_to(rightTopSize, rightTopSize, 180, -90)
geometryPath.line_to(point3)
geometryPath.arc_to(rightBottomSize, rightBottomSize, -90, -90)
geometryPath.line_to(point4)
geometryPath.arc_to(leftBottomSize, leftBottomSize, 0, -90)
geometryPath.line_to(point5)
geometryPath.arc_to(leftTopSize, leftTopSize, 90, -90)
geometryPath.close_figure()
childShape.set_geometry_path(geometryPath)
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Umwandlung von GeometryPath in GraphicsPath (System.Drawing.Drawing2D)
- Erstellen Sie eine Instanz der GeometryShape Klasse.
- Erstellen Sie eine Instanz der GraphicsPath Klasse im System.Drawing.Drawing2D Namespace.
- Konvertieren Sie die GraphicsPath Instanz in die GeometryPath Instanz mit ShapeUtil.
- Wenden Sie die Pfade auf die Form an.
Dieser Python-Code—eine Umsetzung der obigen Schritte—demonstriert den Prozess der GeometryPath zu GraphicsPath-Umwandlung:
import aspose.slides as slides
import aspose.pydrawing as draw
with slides.Presentation() as pres:
shape = pres.slides[0].shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 100)
originalPath = shape.get_geometry_paths()[0]
originalPath.fill_mode = slides.PathFillModeType.NONE
gPath = draw.drawing2d.GraphicsPath()
gPath.add_string("Text in der Form", draw.FontFamily("Arial"), 1, 40, draw.PointF(10, 10), draw.StringFormat.generic_default)
textPath = slides.util.ShapeUtil.graphics_path_to_geometry_path(gPath)
textPath.fill_mode = slides.PathFillModeType.NORMAL
shape.set_geometry_paths([originalPath, textPath])