Sesuaikan Bentuk dalam Presentasi dengan Python

Pendahuluan

Pertimbangkan sebuah persegi. Di PowerPoint, menggunakan Edit Points, Anda dapat:

  • memindahkan sudut persegi ke dalam atau ke luar,
  • menyesuaikan kelengkungan sudut atau titik,
  • menambahkan titik baru ke persegi,
  • memanipulasi titik‑titiknya.

Anda dapat menerapkan operasi ini pada bentuk apa pun. Dengan Edit Points, Anda dapat memodifikasi sebuah bentuk atau membuat yang baru dari bentuk yang sudah ada.

Tips Penyuntingan Bentuk

\

Sebelum Anda mulai menyunting bentuk PowerPoint menggunakan Edit Points, pertimbangkan catatan berikut tentang bentuk:

  • Sebuah bentuk (atau jalurnya) dapat tertutup atau terbuka.
  • Bentuk tertutup tidak memiliki titik awal atau akhir; bentuk terbuka memiliki awal dan akhir.
  • Setiap bentuk memiliki setidaknya dua titik jangkar yang dihubungkan oleh segmen garis.
  • Sebuah segmen bisa lurus atau melengkung; titik jangkar menentukan sifat segmen.
  • Titik jangkar dapat berupa corner, smooth, atau straight:
    • Titik corner adalah tempat dua segmen lurus bertemu pada sebuah sudut.
    • Titik smooth memiliki dua pegangan yang kolinear, dan segmen yang bersebelahan membentuk lengkungan halus. Dalam hal ini, kedua pegangan berada pada jarak yang sama dari titik jangkar.
    • Titik straight juga memiliki dua pegangan kolinear, dan segmen yang bersebelahan membentuk lengkungan halus. Dalam hal ini, pegangan tidak harus berada pada jarak yang sama dari titik jangkar.
  • Dengan memindahkan atau menyunting titik jangkar (sehingga mengubah sudut segmen), Anda dapat mengubah penampilan bentuk.

Untuk menyunting bentuk PowerPoint, Aspose.Slides menyediakan kelas GeometryPath .

Operasi Penyuntingan Sederhana

Metode berikut digunakan untuk operasi penyuntingan sederhana.

Tambahkan garis ke akhir jalur:

line_to(point)
line_to(x, y)

Tambahkan garis pada posisi tertentu dalam jalur:

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

Tambahkan kurva Bezier kubik ke akhir jalur:

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

Tambahkan kurva Bezier kubik pada posisi tertentu dalam jalur:

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

Tambahkan kurva Bezier kuadratik ke akhir jalur:

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

Tambahkan kurva Bezier kuadratik pada posisi tertentu dalam jalur:

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

Tambahkan sebuah busur ke jalur:

arc_to(width, heigth, startAngle, sweepAngle)

Tutup bentuk saat ini dalam jalur:

close_figure()

Atur posisi untuk titik berikutnya:

move_to(point)
move_to(x, y)

Hapus segmen jalur pada indeks tertentu:

remove_at(index)

Tambahkan Titik Kustom ke Bentuk

Di sini Anda akan belajar cara mendefinisikan bentuk bebas dengan menambahkan urutan titik Anda sendiri. Dengan menentukan titik yang berurutan dan jenis segmen (lurus atau melengkung) serta secara opsional menutup jalur, Anda dapat menggambar grafik kustom yang presisi—poligon, ikon, balon penjelas, atau logo—langsung pada slide Anda.

  1. Buat sebuah instance kelas GeometryShape dan atur ShapeType.RECTANGLE .
  2. Dapatkan sebuah instance GeometryPath dari bentuk.
  3. Sisipkan titik baru di antara dua titik atas pada jalur.
  4. Sisipkan titik baru di antara dua titik bawah pada jalur.
  5. Terapkan jalur yang diperbarui ke bentuk.
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)

Titik kustom

Hapus Titik dari Bentuk

Terkadang sebuah bentuk kustom berisi titik yang tidak diperlukan yang mempersulit geometri atau memengaruhi cara tampilannya. Bagian ini menunjukkan cara menghapus titik tertentu dari jalur bentuk sehingga Anda dapat menyederhanakan kontur dan mencapai hasil yang lebih bersih dan presisi.

  1. Buat sebuah instance kelas GeometryShape dan atur tipe ShapeType.HEART .
  2. Dapatkan sebuah instance GeometryPath dari bentuk.
  3. Hapus sebuah segmen dari jalur.
  4. Terapkan jalur yang diperbarui ke bentuk.
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)

Titik yang dihapus

Buat Bentuk Kustom

Buat bentuk vektor khusus dengan mendefinisikan sebuah GeometryPath dan menyusunnya dari garis, busur, dan kurva Bézier. Bagian ini menunjukkan cara membuat geometri kustom dari awal dan menambahkan bentuk yang dihasilkan ke slide Anda.

  1. Hitung titik-titik untuk bentuk.
  2. Buat sebuah instance kelas GeometryPath .
  3. Isi jalur dengan titik-titik tersebut.
  4. Buat sebuah instance kelas GeometryShape .
  5. Terapkan jalur ke bentuk.
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)

Bentuk kustom

Buat Bentuk Kustom Komposit

Membuat bentuk kustom komposit memungkinkan Anda menggabungkan beberapa jalur geometri menjadi satu bentuk yang dapat digunakan kembali pada slide. Definisikan dan gabungkan jalur-jalur ini untuk membangun visual kompleks yang melampaui set bentuk standar.

  1. Buat sebuah instance kelas GeometryShape .
  2. Buat instance pertama dari kelas GeometryPath .
  3. Buat instance kedua dari kelas GeometryPath .
  4. Terapkan kedua jalur ke bentuk.
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)

Bentuk komposit

Buat Bentuk Kustom dengan Sudut Melengkung

Bagian ini menunjukkan cara menggambar bentuk kustom dengan sudut melengkung secara halus menggunakan jalur geometri. Anda akan menggabungkan segmen lurus dan busur melingkar untuk membentuk kontur dan menambahkan bentuk selesai ke slide Anda.

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)

Sudut melengkung

Tentukan Apakah Geometri Bentuk Tertutup

Suatu bentuk tertutup didefinisikan sebagai bentuk di mana semua sisinya terhubung, membentuk satu batas tanpa celah. Bentuk semacam itu dapat berupa bentuk geometris sederhana atau kontur kustom yang kompleks. Contoh kode berikut menunjukkan cara memeriksa apakah geometri sebuah bentuk tertutup:

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

Apa yang akan terjadi pada isian dan garis tepi setelah mengganti geometri?

Gaya tetap menyertai bentuk; hanya kontur yang berubah. Isian dan garis tepi secara otomatis diterapkan pada geometri baru.

Bagaimana cara memutar bentuk kustom bersama geometri secara benar?

Gunakan properti rotation pada bentuk; geometri berputar bersama bentuk karena terikat pada sistem koordinat bentuk itu sendiri.

Bisakah saya mengonversi bentuk kustom menjadi gambar untuk “mengunci” hasilnya?

Ya. Ekspor area slide yang diperlukan atau bentuk itu sendiri ke format raster; ini menyederhanakan pekerjaan lanjutan dengan geometri yang kompleks.