كيفية إضافة أشكال إلى PowerPoint في .NET

كيفية إضافة أشكال إلى PowerPoint في .NET

يدعم 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: إضافة موصل

الموصلات تربط شكلين بصريًا. أنشئ الأشكال أولاً، ثم أضف موصلاً وحدد نقاط الاتصال البداية والنهاية.

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 للمستطيل: الأعلى=0، اليسار=1، الأسفل=2، اليمين=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() يحتوي على خصائص 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 غير مُنفذة في هذا الإصدار.


انظر أيضًا

 العربية