Jak połączyć kształty za pomocą łączników w .NET
Łączniki w Aspose.Slides FOSS to kształty linii, które przyczepiają się do punktów połączeń w innych kształtach. Gdy przesuwasz połączony kształt, punkt końcowy łącznika przemieszcza się razem z nim. Najbardziej powszechnym typem łącznika jest BentConnector3, który omija przeszkody za pomocą jednego zgięcia łokciowego.
Wymagania wstępne
dotnet add package Aspose.Slides.FossIndeksy miejsc połączeń
Każdy kształt ma cztery ponumerowane miejsca połączeń:
| Indeks | Pozycja |
|---|---|
0 | Górny środek |
1 | Lewy środek |
2 | Dolny środek |
3 | Prawy środek |
Połącz dwa kształty
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
// Add two rectangles
var box1 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 200, 200, 100);
var box2 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 450, 200, 200, 100);
box1.AddTextFrame("Start");
box2.AddTextFrame("End");
// Add a bent connector (initial bounds are overwritten by the connection)
var conn = slide.Shapes.AddConnector(ShapeType.BentConnector3, 0, 0, 10, 10);
// Connect right side of box1 (site 3) to left side of box2 (site 1)
conn.StartShapeConnectedTo = box1;
conn.StartShapeConnectionSiteIndex = 3;
conn.EndShapeConnectedTo = box2;
conn.EndShapeConnectionSiteIndex = 1;
prs.Save("connected.pptx", SaveFormat.Pptx);Granice symbolu zastępczego (0, 0, 10, 10) przekazane do AddConnector są ignorowane po ustawieniu punktów końcowych połączenia; PowerPoint przekierowuje łącznik do dołączonych kształtów.
Typy złączy
// Straight line
ShapeType.StraightConnector1
// Single elbow (L-shape)
ShapeType.BentConnector2
// Double elbow (Z-shape): most common
ShapeType.BentConnector3
// Curved connector
ShapeType.CurvedConnector3Stylizuj linię łącznika
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Drawing;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
var box1 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 150, 180, 80);
var box2 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 500, 300, 180, 80);
var conn = slide.Shapes.AddConnector(ShapeType.BentConnector3, 0, 0, 10, 10);
conn.StartShapeConnectedTo = box1;
conn.StartShapeConnectionSiteIndex = 2; // bottom of box1
conn.EndShapeConnectedTo = box2;
conn.EndShapeConnectionSiteIndex = 0; // top of box2
// Style: dashed blue line, 2 pt width
var lf = conn.LineFormat;
lf.Width = 2.0;
lf.FillFormat.SolidFillColor.Color = Color.Blue;
lf.DashStyle = LineDashStyle.Dash;
prs.Save("styled-connector.pptx", SaveFormat.Pptx);Diagram przepływu z wieloma łącznikami
using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;
using var prs = new Presentation();
var slide = prs.Slides[0];
// Three-step flowchart
var step1 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 350, 50, 200, 70);
var step2 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 350, 220, 200, 70);
var step3 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 350, 390, 200, 70);
step1.AddTextFrame("Step 1");
step2.AddTextFrame("Step 2");
step3.AddTextFrame("Step 3");
void ConnectVertical(IShapeCollection shapes, IShape topShape, IShape bottomShape)
{
var c = shapes.AddConnector(ShapeType.BentConnector3, 0, 0, 10, 10);
c.StartShapeConnectedTo = topShape;
c.StartShapeConnectionSiteIndex = 2; // bottom
c.EndShapeConnectedTo = bottomShape;
c.EndShapeConnectionSiteIndex = 0; // top
}
ConnectVertical(slide.Shapes, step1, step2);
ConnectVertical(slide.Shapes, step2, step3);
prs.Save("flowchart.pptx", SaveFormat.Pptx);Odczytaj właściwości łącznika
using Aspose.Slides.Foss;
using var prs = new Presentation("connected.pptx");
foreach (var shape in prs.Slides[0].Shapes)
{
if (shape is Connector connector)
{
var start = connector.StartShapeConnectedTo;
var end = connector.EndShapeConnectedTo;
Console.WriteLine($"Connector: {start?.Name ?? "?"} -> {end?.Name ?? "?"}");
}
}