Anpassa former i presentationer med Python
Introduktion
Tänk på en kvadrat. I PowerPoint, med Edit Points, kan du:
- flytta en kvadrats hörn inåt eller utåt,
- justera krökningen av ett hörn eller en punkt,
- lägga till nya punkter på kvadraten,
- manipulera dess punkter.
Du kan tillämpa dessa operationer på vilken form som helst. Med Edit Points kan du modifiera en form eller skapa en ny från en befintlig form.
Tips för redigering av former

Innan du börjar redigera PowerPoint-former med Edit Points, överväg följande anteckningar om former:
- En form (eller dess bana) kan vara sluten eller öppen.
- En sluten form har ingen start- eller slutpunkt; en öppen form har en början och ett slut.
- Varje form har minst två ankarpunkter som är kopplade med linjesegment.
- Ett segment är antingen rakt eller kurvigt; ankarpunkterna bestämmer segmentets natur.
- Ankarpunkter kan vara corner, smooth, eller straight:
- En corner-punkt är där två raka segment möts i en vinkel.
- En smooth-punkt har två handtag som är kollineära, och de angränsande segmenten bildar en mjuk kurva. I detta fall är båda handtagen på samma avstånd från ankaret.
- En straight-punkt har också två kollineära handtag, och de angränsande segmenten bildar en mjuk kurva. I detta fall behöver handtagen inte vara på samma avstånd från ankaret.
- Genom att flytta eller redigera ankarpunkter (och därmed ändra segmentvinklar) kan du förändra formens utseende.
För att redigera PowerPoint-former tillhandahåller Aspose.Slides klassen GeometryPath .
- En GeometryPath instans representerar geometribanan för ett GeometryShape‑objekt.
- För att hämta GeometryPath från en GeometryShape‑instans, använd metoden GeometryShape.get_geometry_paths .
- För att ange GeometryPath för en form, använd GeometryShape.set_geometry_path för solida former och GeometryShape.set_geometry_paths för sammansatta former.
- För att lägga till segment, använd metoderna på GeometryPath .
- Använd egenskaperna GeometryPath.stroke och GeometryPath.fill_mode för att styra ett geometribans utseende.
- Använd egenskapen GeometryPath.path_data för att hämta en formes geometribana som en array av bansegment.
Enkla redigeringsoperationer
Följande metoder används för enkla redigeringsoperationer.
Lägg till en linje till slutet av en bana:
line_to(point)
line_to(x, y)
Lägg till en linje på en angiven position i en bana:
line_to(point, index)
line_to(x, y, index)
Lägg till en kubisk Bezier-kurva till slutet av en bana:
cubic_bezier_to(point1, point2, point3)
cubic_bezier_to(x1, y1, x2, y2, x3, y3)
Lägg till en kubisk Bezier-kurva på en angiven position i en bana:
cubic_bezier_to(point1, point2, point3, index)
cubic_bezier_to(x1, y1, x2, y2, x3, y3, index)
Lägg till en kvadratisk Bezier-kurva till slutet av en bana:
quadratic_bezier_to(point1, point2)
quadratic_bezier_to(x1, y1, x2, y2)
Lägg till en kvadratisk Bezier-kurva på en angiven position i en bana:
quadratic_bezier_to(point1, point2, index)
quadratic_bezier_to(x1, y1, x2, y2, index)
Lägg till en båge till en bana:
arc_to(width, heigth, startAngle, sweepAngle)
Stäng den aktuella figuren i en bana:
close_figure()
Ange positionen för nästa punkt:
move_to(point)
move_to(x, y)
Ta bort bansegmentet på ett givet index:
remove_at(index)
Lägg till anpassade punkter till former
Här lär du dig hur du definierar en frihandsform genom att lägga till din egen sekvens av punkter. Genom att ange ordnade punkter och segmenttyper (raka eller kurviga) och eventuellt stänga banan kan du rita precisa anpassade grafik—polygoner, ikoner, förklaringar eller logotyper—direkt på dina bilder.
- Skapa en instans av klassen GeometryShape och ange dess ShapeType.RECTANGLE .
- Hämta en GeometryPath‑instans från formen.
- Infoga en ny punkt mellan de två övre punkterna på banan.
- Infoga en ny punkt mellan de två nedre punkterna på banan.
- Applicera den uppdaterade banan på formen.
Följande Python‑kod visar hur man lägger till anpassade punkter till en form:
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 200, 100)
geometry_path = shape.get_geometry_paths()[0]
geometry_path.line_to(100, 50, 1)
geometry_path.line_to(100, 50, 4)
shape.set_geometry_path(geometry_path)
presentation.save("custom_points.pptx", slides.export.SaveFormat.PPTX)

Ta bort punkter från former
Ibland innehåller en anpassad form onödiga punkter som komplicerar dess geometri eller påverkar hur den renderas. Den här sektionen visar hur man tar bort specifika punkter från en formes bana så att du kan förenkla konturen och uppnå renare, mer precisa resultat.
- Skapa en instans av klassen GeometryShape och ange dess typ ShapeType.HEART .
- Hämta en GeometryPath‑instans från formen.
- Ta bort ett segment från banan.
- Applicera den uppdaterade banan på formen.
Följande Python‑kod visar hur man tar bort punkter från en form:
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape = slide.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)
presentation.save("removed_points.pptx", slides.export.SaveFormat.PPTX)

Skapa anpassade former
Skapa skräddarsydda vektorformer genom att definiera en GeometryPath och komponera den av linjer, bågar och Bézier‑kurvor. Den här sektionen visar hur du bygger en anpassad geometri från grunden och lägger till den resulterande formen på din bild.
- Beräkna punkterna för formen.
- Skapa en instans av klassen GeometryPath .
- Fyll banan med punkterna.
- Skapa en instans av klassen GeometryShape .
- Applicera banan på formen.
Följande Python‑kod visar hur man skapar en anpassad form:
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))
star_path = slides.GeometryPath()
star_path.move_to(points[0])
for i in range(len(points)):
star_path.line_to(points[i])
star_path.close_figure()
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, R * 2, R * 2)
shape.set_geometry_path(star_path)
presentation.save("custom_shape.pptx", slides.export.SaveFormat.PPTX)

Skapa sammansatta anpassade former
Att skapa en sammansatt anpassad form låter dig kombinera flera geometribanor till en enda återanvändbar form på en bild. Definiera och slå ihop dessa banor för att bygga komplexa visualiseringar som går utöver standarduppsättningen av former.
- Skapa en instans av klassen GeometryShape .
- Skapa den första instansen av klassen GeometryPath .
- Skapa den andra instansen av klassen GeometryPath .
- Applicera båda banorna på formen.
Följande Python‑kod visar hur man skapar en sammansatt anpassad form:
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 200, 100)
geometry_path_0 = slides.GeometryPath()
geometry_path_0.move_to(0, 0)
geometry_path_0.line_to(shape.width, 0)
geometry_path_0.line_to(shape.width, shape.height/3)
geometry_path_0.line_to(0, shape.height / 3)
geometry_path_0.close_figure()
geometry_path_1 = slides.GeometryPath()
geometry_path_1.move_to(0, shape.height/3 * 2)
geometry_path_1.line_to(shape.width, shape.height / 3 * 2)
geometry_path_1.line_to(shape.width, shape.height)
geometry_path_1.line_to(0, shape.height)
geometry_path_1.close_figure()
shape.set_geometry_paths([ geometry_path_0, geometry_path_1])
presentation.save("composite_shape.pptx", slides.export.SaveFormat.PPTX)

Skapa anpassade former med rundade hörn
Den här sektionen visar hur du ritar en anpassad form med mjukt rundade hörn med hjälp av en geometribana. Du kombinerar raka segment och cirkulära bågar för att forma konturen och lägger till den färdiga formen på din bild.
Följande Python‑kod visar hur man skapar en anpassad form med rundade hörn:
import aspose.slides as slides
import aspose.pydrawing as draw
shape_x = 20
shape_y = 20
shape_width = 300
shape_height = 200
left_top_size = 50
right_top_size = 20
right_bottom_size = 40
left_bottom_size = 10
with slides.Presentation() as presentation:
slide = presentation.slides[0]
shape = slide.shapes.add_auto_shape(
slides.ShapeType.CUSTOM, shape_x, shape_y, shape_width, shape_height)
point1 = draw.PointF(left_top_size, 0)
point2 = draw.PointF(shape_width - right_top_size, 0)
point3 = draw.PointF(shape_width, shape_height - right_bottom_size)
point4 = draw.PointF(left_bottom_size, shape_height)
point5 = draw.PointF(0, left_top_size)
geometry_path = slides.GeometryPath()
geometry_path.move_to(point1)
geometry_path.line_to(point2)
geometry_path.arc_to(right_top_size, right_top_size, 180, -90)
geometry_path.line_to(point3)
geometry_path.arc_to(right_bottom_size, right_bottom_size, -90, -90)
geometry_path.line_to(point4)
geometry_path.arc_to(left_bottom_size, left_bottom_size, 0, -90)
geometry_path.line_to(point5)
geometry_path.arc_to(left_top_size, left_top_size, 90, -90)
geometry_path.close_figure()
shape.set_geometry_path(geometry_path)
presentation.save("curved_corners.pptx", slides.export.SaveFormat.PPTX)

Bestäm om en formes geometri är sluten
En sluten form definieras som en där alla sidor är sammanlänkade och bildar en enda gräns utan luckor. En sådan form kan vara en enkel geometrisk form eller en komplex anpassad kontur. Följande kodexempel visar hur man kontrollerar om en formes geometri är sluten:
def is_geometry_closed(geometry_shape):
is_closed = None
for geometry_path in geometry_shape.get_geometry_paths():
data_length = len(geometry_path.path_data)
if data_length == 0:
continue
last_segment = geometry_path.path_data[data_length - 1]
is_closed = last_segment.path_command == PathCommandType.CLOSE
if not is_closed:
return False
return is_closed
FAQ
Vad händer med fyllningen och konturen efter att geometrin har ersatts?
Stilen förblir på formen; endast konturen ändras. Fyllning och kontur appliceras automatiskt på den nya geometrin.
Hur roterar jag en anpassad form korrekt tillsammans med dess geometri?
Använd formens rotation‑egenskap; geometrin roterar med formen eftersom den är bunden till formens egna koordinatsystem.
Kan jag konvertera en anpassad form till en bild för att “låsa” resultatet?
Ja. Exportera det önskade slide‑området eller själva shape till ett rasterformat; detta förenklar vidare arbete med tunga geometrier.