.NET で PowerPoint にシェイプを追加する方法
Aspose.Slides FOSS for .NET は、プレゼンテーション スライドに AutoShapes、Tables、Connectors、PictureFrames を追加することをサポートしています。すべてのシェイプ タイプは slide.Shapes コレクションを通じて追加されます。
ステップバイステップ ガイド
ステップ 1: パッケージをインストールする
dotnet add package Aspose.Slides.Fossインストールを確認する:
using Aspose.Slides.Foss;
Console.WriteLine("Ready");ステップ 2: プレゼンテーションを作成
常にPresentationを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);ステップ 3: AutoShape を追加
slide.Shapes.AddAutoShape(shapeType, x, y, width, height) は、指定された位置とサイズ(すべてポイント単位)に形状を配置します。ShapeType 定数を使用して形状を選択します。
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);ステップ 4: テーブルを追加
slide.Shapes.AddTable(x, y, columnWidths, rowHeights) は指定された位置にテーブルを作成します。列幅と行高さはポイント値の配列です。
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);ステップ5: コネクタを追加
コネクタは2つのシェイプを視覚的にリンクします。まずシェイプを作成し、次にコネクタを追加して開始点と終了点の接続ポイントを設定します。
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);矩形の接続サイトインデックスは 0〜3 に番号付けされます: top=0、left=1、bottom=2、right=3。
ステップ 6: ピクチャーフレームを追加
画像を埋め込み、スライドに PictureFrame として追加します。まず画像バイトを読み取り、プレゼンテーションの画像コレクションに追加し、次にフレームを作成します。
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);一般的な問題と対処法
シェイプが表示スライド領域の外に表示される
スライドはデフォルトで 720 × 540 ポイントです。x または y の値がその範囲を超えると、シェイプがスライド外に配置されます。x < 720 と y < 540 を保持し、x + width <= 720 と y + height <= 540 を確実にしてください。
NullReferenceException にアクセスするとき TextFrame
AddAutoShape() はシェイプオブジェクトを直接返します。null が表示された場合は、戻り値を破棄していないか確認してください。
テーブルセルのテキストは割り当て後に空です
正しいプロパティは.TextFrame.Textです(.Textをセル上に直接使用しないでください)。セルにアクセスするにはtable.Rows[rowIndex][colIndex].TextFrame.Text = "value"を使用します。
よくある質問
スライドに追加できるシェイプの数はいくつですか?
ライブラリが課す制限はありません。実際の制限はファイルサイズと、対象の PPTX ビューアの描画能力に依存します。
形状を追加した後に位置を変更できますか?
はい。AddAutoShape() が返す shape オブジェクトには、設定できる X、Y、Width、および Height プロパティがあります:
shape.X = 100;
shape.Y = 200;
shape.Width = 400;
shape.Height = 80;シェイプのアウトライン(枠線)の色を設定できますか?
はい、shape.LineFormat経由で:
using Aspose.Slides.Foss.Drawing;
shape.LineFormat.FillFormat.SolidFillColor.Color = Color.FromArgb(255, 200, 0, 0);チャートはサポートされていますか?
いいえ。チャート、SmartArt、および OLE オブジェクトはこのエディションでは実装されていません。