Cách Thêm Hình Dạng vào PowerPoint trong .NET

Cách Thêm Hình Dạng vào PowerPoint trong .NET

Aspose.Slides FOSS for .NET hỗ trợ việc thêm AutoShapes, Tables, Connectors và PictureFrames vào các slide trình chiếu. Tất cả các loại hình dạng đều được thêm thông qua bộ sưu tập slide.Shapes.

Hướng Dẫn Từng Bước

Bước 1: Cài đặt gói

dotnet add package Aspose.Slides.Foss

Xác minh việc cài đặt:

using Aspose.Slides.Foss;
Console.WriteLine("Ready");

Bước 2: Tạo một Bản trình bày

Luôn sử dụng Presentation với một câu lệnh using.

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];
// ... add shapes ...
prs.Save("output.pptx", SaveFormat.Pptx);

Bước 3: Thêm AutoShape

slide.Shapes.AddAutoShape(shapeType, x, y, width, height) đặt một hình dạng tại vị trí và kích thước đã cho (tất cả tính bằng điểm). Sử dụng các hằng số ShapeType để chọn hình dạng.

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];

// Rectangle
var rect = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 300, 100);
rect.AddTextFrame("Rectangle shape");

// Ellipse
var ellipse = slide.Shapes.AddAutoShape(ShapeType.Ellipse, 400, 50, 200, 100);
ellipse.AddTextFrame("Ellipse shape");

prs.Save("autoshapes.pptx", SaveFormat.Pptx);

Bước 4: Thêm bảng

slide.Shapes.AddTable(x, y, columnWidths, rowHeights) tạo một bảng tại vị trí được chỉ định. Độ rộng cột và chiều cao hàng là các mảng giá trị điểm.

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];

var colWidths = new double[] { 150.0, 150.0, 150.0 };
var rowHeights = new double[] { 40.0, 40.0, 40.0 };
var table = slide.Shapes.AddTable(50, 200, colWidths, rowHeights);

// Set header row text
string[] headers = { "Product", "Units", "Revenue" };
for (int col = 0; col < headers.Length; col++)
    table.Rows[0][col].TextFrame.Text = headers[col];

// Set data rows
string[][] rows = {
    new[] { "Widget A", "120", "$2,400" },
    new[] { "Widget B", "85", "$1,700" },
};
for (int rowIdx = 0; rowIdx < rows.Length; rowIdx++)
    for (int col = 0; col < rows[rowIdx].Length; col++)
        table.Rows[rowIdx + 1][col].TextFrame.Text = rows[rowIdx][col];

prs.Save("table.pptx", SaveFormat.Pptx);

Bước 5: Thêm một Connector

Các kết nối liên kết hai hình dạng một cách trực quan. Đầu tiên tạo các hình dạng, sau đó thêm một kết nối và đặt các điểm kết nối bắt đầu và kết thúc của nó.

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
var slide = prs.Slides[0];

var box1 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 100, 150, 60);
box1.AddTextFrame("Start");

var box2 = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 350, 100, 150, 60);
box2.AddTextFrame("End");

var conn = slide.Shapes.AddConnector(ShapeType.BentConnector3, 0, 0, 10, 10);
conn.StartShapeConnectedTo = box1;
conn.StartShapeConnectionSiteIndex = 3;  // right side of box1
conn.EndShapeConnectedTo = box2;
conn.EndShapeConnectionSiteIndex = 1;    // left side of box2

prs.Save("connector.pptx", SaveFormat.Pptx);

Các chỉ số vị trí kết nối được đánh số 0-3 cho một hình chữ nhật: top=0, left=1, bottom=2, right=3.


Bước 6: Thêm khung ảnh

Nhúng một hình ảnh và thêm nó vào slide dưới dạng PictureFrame. Đọc các byte của hình ảnh trước, thêm chúng vào bộ sưu tập hình ảnh của bản trình chiếu, sau đó tạo khung.

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation();
byte[] imageData = File.ReadAllBytes("logo.png");
var image = prs.Images.AddImage(imageData);

var slide = prs.Slides[0];
slide.Shapes.AddPictureFrame(
    ShapeType.Rectangle,  // bounding shape type
    50, 50,               // x, y in points
    200, 150,             // width, height in points
    image
);

prs.Save("with-image.pptx", SaveFormat.Pptx);

Các vấn đề thường gặp và cách khắc phục

Hình dạng xuất hiện ngoài khu vực slide có thể nhìn thấy

Các slide mặc định có kích thước 720 x 540 điểm. Giá trị của x hoặc y vượt ra ngoài giới hạn này sẽ đặt hình dạng ra ngoài slide. Giữ x < 720y < 540, và đảm bảo x + width <= 720y + height <= 540.

NullReferenceException khi truy cập TextFrame

AddAutoShape() trả về đối tượng shape trực tiếp. Nếu bạn thấy null, hãy kiểm tra xem bạn có đang bỏ qua giá trị trả về hay không.

Văn bản ô bảng trống sau khi gán

Thuộc tính đúng là .TextFrame.Text (không phải .Text trực tiếp trên ô). Truy cập các ô như table.Rows[rowIndex][colIndex].TextFrame.Text = "value".


Câu hỏi thường gặp

Tôi có thể thêm bao nhiêu hình dạng vào một slide?

Không có giới hạn do thư viện áp đặt. Giới hạn thực tế phụ thuộc vào kích thước tệp và khả năng hiển thị của trình xem PPTX mục tiêu của bạn.

Có thể thay đổi vị trí của hình dạng sau khi thêm nó không?

Có. Đối tượng shape được trả về bởi AddAutoShape() có các thuộc tính X, Y, WidthHeight mà bạn có thể thiết lập:

shape.X = 100;
shape.Y = 200;
shape.Width = 400;
shape.Height = 80;

Tôi có thể đặt màu viền (border) cho hình dạng không?

Có, qua shape.LineFormat:

using Aspose.Slides.Foss.Drawing;
shape.LineFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 200, 0, 0);

Biểu đồ có được hỗ trợ không?

Không. Biểu đồ, SmartArt và các đối tượng OLE không được triển khai trong phiên bản này.


Xem thêm

 Tiếng Việt