Προσαρμογή Σχημάτων σε Παρουσιάσεις με Python

Εισαγωγή

Σκεφτείτε ένα τετράγωνο. Στο PowerPoint, χρησιμοποιώντας Edit Points, μπορείτε:

  • μετακινήστε την γωνία ενός τετραγώνου προς το εσωτερικό ή το εξωτερικό,
  • ρυθμίστε την καμπυλότητα μιας γωνίας ή ενός σημείου,
  • προσθέστε νέα σημεία στο τετράγωνο,
  • χειριστείτε τα σημεία του.

Μπορείτε να εφαρμόσετε αυτές τις λειτουργίες σε οποιοδήποτε σχήμα. Με το Edit Points, μπορείτε να τροποποιήσετε ένα σχήμα ή να δημιουργήσετε ένα νέο από ένα υπάρχον σχήμα.

Συμβουλές Επεξεργασίας Σχήματος

Εντολή Edit Points

Πριν ξεκινήσετε την επεξεργασία των σχημάτων PowerPoint χρησιμοποιώντας το Edit Points, λάβετε υπόψη αυτές τις σημειώσεις σχετικά με τα σχήματα:

  • Ένα σχήμα (ή η διαδρομή του) μπορεί να είναι κλειστό ή ανοικτό.
  • Ένα κλειστό σχήμα δεν έχει σημείο έναρξης ή λήξης· ένα ανοικτό σχήμα έχει αρχή και τέλος.
  • Κάθε σχήμα έχει τουλάχιστον δύο σημεία αγκύρωσης συνδεδεμένα με τμήματα γραμμής.
  • Ένα τμήμα είναι είτε ευθύ είτε κυρτό· τα σημεία αγκύρωσης καθορίζουν τη φύση του τμήματος.
  • Τα σημεία αγκύρωσης μπορούν να είναι γωνία, ομαλό, ή ευθύ:
    • Ένα γωνία σημείο είναι όπου δύο ευθύ τμήματα συναντώνται σε γωνία.
    • Ένα ομαλό σημείο έχει δύο χειριστήρια που είναι συγγραμμικά, και τα γειτονικά τμήματα σχηματίζουν μια ομαλή καμπύλη. Σε αυτήν την περίπτωση, και τα δύο χειριστήρια έχουν την ίδια απόσταση από το σημείο αγκύρωσης.
    • Ένα ευθύ σημείο επίσης έχει δύο συγγραμμικά χειριστήρια, και τα γειτονικά τμήματα σχηματίζουν μια ομαλή καμπύλη. Σε αυτήν την περίπτωση, τα χειριστήρια δεν χρειάζεται να έχουν την ίδια απόσταση από το σημείο αγκύρωσης.
  • Με τη μετακίνηση ή την επεξεργασία των σημείων αγκύρωσης (αλλάζοντας έτσι τις γωνίες των τμημάτων), μπορείτε να αλλάξετε την εμφάνιση του σχήματος.

Για την επεξεργασία σχημάτων PowerPoint, το Aspose.Slides παρέχει την κλάση GeometryPath .

  • Ένα αντικείμενο GeometryPath αντιπροσωπεύει τη γεωμετρική διαδρομή ενός αντικειμένου GeometryShape .
  • Για να ανακτήσετε το GeometryPath από ένα αντικείμενο GeometryShape , χρησιμοποιήστε τη μέθοδο GeometryShape.get_geometry_paths .
  • Για να ορίσετε το GeometryPath για ένα σχήμα, χρησιμοποιήστε τη GeometryShape.set_geometry_path για συμπαγή σχήματα και τη GeometryShape.set_geometry_paths για σύνθετα σχήματα.
  • Για την προσθήκη τμημάτων, χρησιμοποιήστε τις μεθόδους στην κλάση GeometryPath .
  • Χρησιμοποιήστε τις ιδιότητες GeometryPath.stroke και GeometryPath.fill_mode για να ελέγξετε την εμφάνιση μιας γεωμετρικής διαδρομής.
  • Χρησιμοποιήστε την ιδιότητα GeometryPath.path_data για να ανακτήσετε τη γεωμετρική διαδρομή ενός σχήματος ως έναν πίνακα τμημάτων διαδρομής.

Απλές Λειτουργίες Επεξεργασίας

Οι παρακάτω μέθοδοι χρησιμοποιούνται για απλές λειτουργίες επεξεργασίας.

Προσθήκη γραμμής στο τέλος μιας διαδρομής:

line_to(point)
line_to(x, y)

Προσθήκη γραμμής σε συγκεκριμένη θέση σε μια διαδρομή:

line_to(point, index)
line_to(x, y, index)

Προσθήκη κυβικής καμπύλης Bezier στο τέλος μιας διαδρομής:

cubic_bezier_to(point1, point2, point3)
cubic_bezier_to(x1, y1, x2, y2, x3, y3)

Προσθήκη κυβικής καμπύλης Bezier σε συγκεκριμένη θέση σε μια διαδρομή:

cubic_bezier_to(point1, point2, point3, index)
cubic_bezier_to(x1, y1, x2, y2, x3, y3, index)

Προσθήκη τετραγωνικής καμπύλης Bezier στο τέλος μιας διαδρομής:

quadratic_bezier_to(point1, point2)
quadratic_bezier_to(x1, y1, x2, y2)

Προσθήκη τετραγωνικής καμπύλης Bezier σε συγκεκριμένη θέση σε μια διαδρομή:

quadratic_bezier_to(point1, point2, index)
quadratic_bezier_to(x1, y1, x2, y2, index)

Προσθήκη τόξου σε μια διαδρομή:

arc_to(width, heigth, startAngle, sweepAngle)

Κλείσιμο του τρέχοντος σχήματος σε μια διαδρομή:

close_figure()

Ορισμός θέσης για το επόμενο σημείο:

move_to(point)
move_to(x, y)

Αφαίρεση τμήματος διαδρομής σε δεδομένο δείκτη:

remove_at(index)

Προσθήκη Προσαρμοσμένων Σημείων σε Σχήματα

Εδώ θα μάθετε πώς να ορίσετε ένα ελεύθερης μορφής σχήμα προσθέτοντας τη δική σας ακολουθία σημείων. Με τον καθορισμό διαδοχικών σημείων και τύπων τμημάτων (ευθύ ή κυρτό) και προαιρετικά κλείνοντας τη διαδρομή, μπορείτε να σχεδιάσετε ακριβή προσαρμοσμένα γραφικά—πολυγωνικά, εικονίδια, επισημάνσεις ή λογότυπα—απευθείας στις διαφάνειές σας.

  1. Δημιουργήστε μια παρουσία της κλάσης GeometryShape και ορίστε το ShapeType.RECTANGLE .
  2. Λάβετε μια παρουσία GeometryPath από το σχήμα.
  3. Εισάγετε ένα νέο σημείο μεταξύ των δύο άνω σημείων της διαδρομής.
  4. Εισάγετε ένα νέο σημείο μεταξύ των δύο κάτω σημείων της διαδρομής.
  5. Εφαρμόστε τη ενημερωμένη διαδρομή στο σχήμα.
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)

Προσαρμοσμένα σημεία

Αφαίρεση Σημείων από Σχήματα

Μερικές φορές ένα προσαρμοσμένο σχήμα περιέχει περιττά σημεία που δυσκολεύουν τη γεωμετρία του ή επηρεάζουν τον τρόπο απόδοσής του. Αυτή η ενότητα δείχνει πώς να αφαιρέσετε συγκεκριμένα σημεία από τη διαδρομή ενός σχήματος ώστε να απλοποιήσετε το περίγραμμα και να επιτύχετε καθαρότερα, πιο ακριβή αποτελέσματα.

  1. Δημιουργήστε μια παρουσία της κλάσης GeometryShape και ορίστε τον τύπο ShapeType.HEART .
  2. Λάβετε μια παρουσία GeometryPath από το σ_shape.
  3. Αφαιρέστε ένα τμήμα από τη διαδρομή.
  4. Εφαρμόστε τη ενημερωμένη διαδρομή στο σ_shape.
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)

Αφαιρεμένα σημεία

Δημιουργία Προσαρμοσμένων Σχημάτων

Δημιουργήστε εξατομικευμένα διανυσματικά σχήματα ορίζοντας ένα GeometryPath και συνθέτοντάς το από γραμμές, τόξα και καμπύλες Bézier. Αυτή η ενότητα δείχνει πώς να κατασκευάσετε μια προσαρμοσμένη γεωμετρία από το μηδέν και να προσθέσετε το αποτέλεσμα σχήμα στην διαφάνεια σας.

  1. Υπολογίστε τα σημεία του σχήματος.
  2. Δημιουργήστε μια παρουσία της κλάσης GeometryPath .
  3. Συμπληρώστε τη διαδρομή με τα σημεία.
  4. Δημιουργήστε μια παρουσία της κλάσης GeometryShape .
  5. Εφαρμόστε τη διαδρομή στο σ_shape.
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)

Προσαρμοσμένο σχήμα

Δημιουργία Σύνθετων Προσαρμοσμένων Σχημάτων

Η δημιουργία ενός σύνθετου προσαρμοσμένου σχήματος σας επιτρέπει να συνδυάσετε πολλαπλές γεωμετρικές διαδρομές σε ένα ενιαίο, επαναχρησιμοποιήσιμο σ_shape σε μια διαφάνεια. Ορίστε και συγχωνεύστε αυτές τις διαδρομές για να κατασκευάσετε σύνθετες απεικονίσεις που υπερβαίνουν το τυπικό σύνολο σχημάτων.

  1. Δημιουργήστε μια παρουσία της κλάσης GeometryShape .
  2. Δημιουργήστε την πρώτη παρουσία της κλάσης GeometryPath .
  3. Δημιουργήστε τη δεύτερη παρουσία της κλάσης GeometryPath .
  4. Εφαρμόστε και τις δύο διαδρομές στο σ_shape.
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)

Σύνθετο σχήμα

Δημιουργία Προσαρμοσμένων Σχημάτων με Καμπυλωτές Γωνίες

Αυτή η ενότητα δείχνει πώς να σχεδιάσετε ένα προσαρμοσμένο σχήμα με ομαλά καμπυλωτές γωνίες χρησιμοποιώντας μια γεωμετρική διαδρομή. Θα συνδυάσετε ευθύγραμμα τμήματα και κυκλικά τόξα για να σχηματίσετε το περίγραμμα και θα προσθέσετε το τελικό σχήμα στη διαφάνεια σας.

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)

Καμπυλωτές γωνίες

Καθορισμός Εάν Η Γεωμετρία Ένα Σχήματος Είναι Κλειστή

Ένα κλειστό σχήμα ορίζεται ως εκείνο όπου όλες οι πλευρές του συνδέονται, σχηματίζοντας ένα ενιαίο σύνορο χωρίς κενά. Ένα τέτοιο σ_shape μπορεί να είναι μια απλή γεωμετρική μορφή ή ένα σύνθετο προσαρμοσμένο περίγραμμα. Το παρακάτω παράδειγμα κώδικα δείχνει πώς να ελέγξετε αν η γεωμετρία ενός σ_shape είναι κλειστή:

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

Συχνές Ερωτήσεις

Τι θα συμβεί στο γέμισμα και το περίγραμμα μετά την αντικατάσταση της γεωμετρίας;

Το στυλ παραμένει στο σ_shape· μόνο το περίγραμμα αλλάζει. Το γέμισμα και το περίγραμμα εφαρμόζονται αυτόματα στη νέα γεωμετρία.

Πώς μπορώ να περιστρέψω σωστά ένα προσαρμοσμένο σ_shape μαζί με τη γεωμετρία του;

Χρησιμοποιήστε την ιδιότητα rotation του σ_shape· η γεωμετρία περιστρέφεται μαζί με το σ_shape επειδή είναι δεσμευμένη στο δικό του σύστημα συντεταγμένων.

Μπορώ να μετατρέψω ένα προσαρμοσμένο σ_shape σε εικόνα για να «κλειδώσω» το αποτέλεσμα;

Ναι. Εξάγετε την απαιτούμενη περιοχή slide ή το shape σε μορφή raster· αυτό απλοποιεί την περαιτέρω εργασία με πολύπλοκες γεωμετρίες.