Cách kết nối các hình dạng với connector trong Python
Kết nối trong Aspose.Slides FOSS là các hình dạng đường thẳng gắn vào các vị trí kết nối trên các hình dạng khác. Khi bạn di chuyển một hình dạng đã được kết nối, điểm cuối của kết nối sẽ di chuyển cùng nó. Loại kết nối phổ biến nhất là BENT_CONNECTOR3, nó di chuyển quanh các chướng ngại vật với một khúc gập duy nhất.
Điều kiện tiên quyết
pip install aspose-slides-fossChỉ mục trang kết nối
Mỗi hình có bốn vị trí kết nối được đánh số:
| Chỉ mục | Vị trí |
|---|---|
0 | Trung tâm trên |
1 | Trung tâm trái |
2 | Trung tâm dưới |
3 | Trung tâm phải |
Kết Nối Hai Hình
from aspose.slides_foss import ShapeType
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat
with slides.Presentation() as prs:
slide = prs.slides[0]
# Add two rectangles
box1 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 200, 200, 100)
box2 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 450, 200, 200, 100)
box1.add_text_frame("Start")
box2.add_text_frame("End")
# Add a bent connector (initial bounds are overwritten by the connection)
conn = slide.shapes.add_connector(ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10)
# Connect right side of box1 (site 3) to left side of box2 (site 1)
conn.start_shape_connected_to = box1
conn.start_shape_connection_site_index = 3
conn.end_shape_connected_to = box2
conn.end_shape_connection_site_index = 1
prs.save("connected.pptx", SaveFormat.PPTX)Các giới hạn placeholder (0, 0, 10, 10) được truyền cho add_connector sẽ bị bỏ qua một khi các điểm cuối kết nối được thiết lập; PowerPoint sẽ định tuyến lại kết nối tới các hình dạng đã đính kèm.
Các loại kết nối
from aspose.slides_foss import ShapeType
# Straight line
ShapeType.STRAIGHT_CONNECTOR1
# Single elbow (L-shape)
ShapeType.BENT_CONNECTOR2
# Double elbow (Z-shape): most common
ShapeType.BENT_CONNECTOR3
# Curved connector
ShapeType.CURVED_CONNECTOR3Định dạng Đường kết nối
from aspose.slides_foss import ShapeType, LineDashStyle
from aspose.slides_foss.drawing import Color
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat
with slides.Presentation() as prs:
slide = prs.slides[0]
box1 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 150, 180, 80)
box2 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 500, 300, 180, 80)
conn = slide.shapes.add_connector(ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10)
conn.start_shape_connected_to = box1
conn.start_shape_connection_site_index = 2 # bottom of box1
conn.end_shape_connected_to = box2
conn.end_shape_connection_site_index = 0 # top of box2
# Style: dashed blue line, 2 pt width
lf = conn.line_format
lf.width = 2.0
lf.fill_format.solid_fill_color.color = Color.blue
lf.dash_style = LineDashStyle.DASH
prs.save("styled-connector.pptx", SaveFormat.PPTX)Lưu đồ với Nhiều Kết nối
from aspose.slides_foss import ShapeType
import aspose.slides_foss as slides
from aspose.slides_foss.export import SaveFormat
with slides.Presentation() as prs:
slide = prs.slides[0]
# Three-step flowchart
step1 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 350, 50, 200, 70)
step2 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 350, 220, 200, 70)
step3 = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 350, 390, 200, 70)
step1.add_text_frame("Step 1")
step2.add_text_frame("Step 2")
step3.add_text_frame("Step 3")
def connect_vertical(shapes, top_shape, bottom_shape):
conn = shapes.add_connector(ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10)
conn.start_shape_connected_to = top_shape
conn.start_shape_connection_site_index = 2 # bottom
conn.end_shape_connected_to = bottom_shape
conn.end_shape_connection_site_index = 0 # top
return conn
connect_vertical(slide.shapes, step1, step2)
connect_vertical(slide.shapes, step2, step3)
prs.save("flowchart.pptx", SaveFormat.PPTX)Đọc Thuộc tính Kết nối
from aspose.slides_foss import Connector
import aspose.slides_foss as slides
with slides.Presentation("connected.pptx") as prs:
for shape in prs.slides[0].shapes:
if isinstance(shape, Connector):
start = shape.start_shape_connected_to
end = shape.end_shape_connected_to
print(f"Connector: {getattr(start, 'name', '?')} → {getattr(end, 'name', '?')}")