تنسيق أشكال PowerPoint في C++

مقدمة

في PowerPoint، يمكنك إضافة أشكال إلى الشرائح. بما أن الأشكال تتكون من خطوط، يمكنك تنسيقها عن طريق تعديل أو تطبيق التأثيرات على حدودها. بالإضافة إلى ذلك، يمكنك تنسيق الأشكال عن طريق تحديد الإعدادات التي تتحكم في طريقة ملئها الداخلي.

تنسيق الشكل في PowerPoint

توفر Aspose.Slides للغة C++ واجهات وطرق تسمح لك بتنسيق الأشكال باستخدام نفس الخيارات المتاحة في PowerPoint.

تنسيق الخطوط

باستخدام Aspose.Slides، يمكنك تحديد نمط خط مخصص لشكل. الخطوات التالية توضح الإجراء:

  1. إنشاء كائن من الفئة Presentation.
  2. الحصول على مرجع إلى شريحة بواسطة فهرستها.
  3. إضافة IAutoShape إلى الشريحة.
  4. تعيين line style للشكل.
  5. تعيين عرض الخط.
  6. تعيين dash style للخط.
  7. تعيين لون الخط للشكل.
  8. حفظ العرض المعدل كملف PPTX.

الكود التالي يوضح كيفية تنسيق مستطيل AutoShape:

#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IColorFormat.h>
#include <DOM/IFillFormat.h>
#include <DOM/ILineFillFormat.h>
#include <DOM/ILineFormat.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/LineDashStyle.h>
#include <DOM/LineStyle.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
using namespace System::Drawing;

// إنشاء كائن من فئة Presentation التي تمثل ملف عرض تقديمي.
auto presentation = MakeObject<Presentation>();

// الحصول على الشريحة الأولى.
auto slide = presentation->get_Slide(0);

// إضافة شكل تلقائي من النوع Rectangle.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 150, 150, 75);

// تعيين لون التعبئة لشكل المستطيل.
shape->get_FillFormat()->set_FillType(FillType::NoFill);

// تطبيق التنسيق على خطوط المستطيل.
shape->get_LineFormat()->set_Style(LineStyle::ThickThin);
shape->get_LineFormat()->set_Width(7);
shape->get_LineFormat()->set_DashStyle(LineDashStyle::Dash);

// تعيين اللون لخط المستطيل.
shape->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
shape->get_LineFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Blue());

// حفظ ملف PPTX إلى القرص.
presentation->Save(u"formatted_lines.pptx", SaveFormat::Pptx);
presentation->Dispose();

النتيجة:

الخطوط المنسقة في العرض

تطبيق تأثيرات الرسم التخطيطي على خطوط الشكل

يُضفي تأثير الرسم التخطيطي مظهرًا يدويًا على خط الشكل. استخدم IShape::get_LineFormat للوصول إلى إعدادات الخط، وILineFormat::get_SketchFormat للوصول إلى إعدادات التخطيط، وISketchFormat::set_SketchType لتحديد قيمة من تعداد LineSketchType.

الكود التالي بلغة C++ يوضح كيفية تطبيق تأثير LineSketchType::Curved ، وقراءة القيمة المُعيَّنة صراحةً، وإزالة التأثير باستخدام LineSketchType::None:

auto presentation = MakeObject<Presentation>();

auto slide = presentation->get_Slide(0);
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 200, 100);

// Access the shape's line format and its sketch format.
auto sketchFormat = shape->get_LineFormat()->get_SketchFormat();

// Apply a sketch effect.
sketchFormat->set_SketchType(LineSketchType::Curved);

// Read the sketch effect assigned directly to the shape.
auto explicitSketchType = sketchFormat->get_SketchType();
Console::WriteLine(u"Explicit sketch type: {0}", explicitSketchType);

// Remove the sketch effect.
sketchFormat->set_SketchType(LineSketchType::None);

presentation->Dispose();

القيمة التي تُرجعها الدالة ISketchFormat::get_SketchType تمثل الإعداد المعين مباشرةً للشكل. إذا كان تنسيق الخط يمكن وراثته من موضوع أو شريحة رئيسية أو شريحة تخطيط، استخدم ILineFormat::GetEffective، وصول إلى ILineFormatEffectiveData::get_SketchFormat، وقراءة ISketchFormatEffectiveData::get_SketchType. القيمة الفعلية تعكس التنسيق الذي يتم تطبيقه فعليًا بعد حل الوراثة:

auto presentation = MakeObject<Presentation>(u"presentation.pptx");

auto shape = presentation->get_Slide(0)->get_Shape(0);
auto lineFormat = shape->get_LineFormat();

auto explicitSketchType = lineFormat->get_SketchFormat()->get_SketchType();
auto effectiveLineFormat = lineFormat->GetEffective();
auto effectiveSketchType = effectiveLineFormat->get_SketchFormat()->get_SketchType();

Console::WriteLine(u"Explicit sketch type: {0}", explicitSketchType);
Console::WriteLine(u"Effective sketch type: {0}", effectiveSketchType);

presentation->Dispose();

تنسيق أنماط الوصل

فيما يلي ثلاثة خيارات لأنواع الوصل:

  • دوري
  • قاطع
  • مشطوف

بشكل افتراضي، عندما يقوم PowerPoint بدمج خطين بزاوية (مثلًا عند زاوية الشكل)، يستخدم إعداد دوري. ومع ذلك، إذا كنت ترسم شكلًا بزاويات حادة، قد تفضّل خيار قاطع.

نمط الوصل في العرض

الكود التالي بلغة C++ يوضح كيف تم إنشاء ثلاثة مستطيلات (كما هو موضح في الصورة أعلاه) باستخدام إعدادات نوع الوصل Miter وBevel وRound:

#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IColorFormat.h>
#include <DOM/IFillFormat.h>
#include <DOM/ILineFillFormat.h>
#include <DOM/ILineFormat.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/ITextFrame.h>
#include <DOM/LineJoinStyle.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
using namespace System::Drawing;

// إنشاء كائن من فئة Presentation التي تمثل ملف عرض تقديمي.
auto presentation = MakeObject<Presentation>();

// الحصول على الشريحة الأولى.
auto slide = presentation->get_Slide(0);

// إضافة ثلاثة أشكال تلقائية من النوع Rectangle.
auto shape1 = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 20, 20, 150, 75);
auto shape2 = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 210, 20, 150, 75);
auto shape3 = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 20, 135, 150, 75);

// تعيين لون التعبئة لكل شكل مستطيل.
shape1->get_FillFormat()->set_FillType(FillType::Solid);
shape1->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Black());
shape2->get_FillFormat()->set_FillType(FillType::Solid);
shape2->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Black());
shape3->get_FillFormat()->set_FillType(FillType::Solid);
shape3->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Black());

// تعيين عرض الخط.
shape1->get_LineFormat()->set_Width(15);
shape2->get_LineFormat()->set_Width(15);
shape3->get_LineFormat()->set_Width(15);

// تعيين اللون لخط كل مستطيل.
shape1->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
shape1->get_LineFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Blue());
shape2->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
shape2->get_LineFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Blue());
shape3->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
shape3->get_LineFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Blue());

// تعيين نمط الوصل.
shape1->get_LineFormat()->set_JoinStyle(LineJoinStyle::Miter);
shape2->get_LineFormat()->set_JoinStyle(LineJoinStyle::Bevel);
shape3->get_LineFormat()->set_JoinStyle(LineJoinStyle::Round);

// إضافة نص إلى كل مستطيل.
shape1->get_TextFrame()->set_Text(u"Miter Join Style");
shape2->get_TextFrame()->set_Text(u"Bevel Join Style");
shape3->get_TextFrame()->set_Text(u"Round Join Style");

// حفظ ملف PPTX إلى القرص.
presentation->Save(u"join_styles.pptx", SaveFormat::Pptx);
presentation->Dispose();

ملء متدرج

في PowerPoint، تُعد خاصية الملء المتدرج خيارًا تنسيقيًا يتيح لك تطبيق تدرج مستمر من الألوان على الشكل. على سبيل المثال، يمكنك تطبيق لونين أو أكثر بحيث يتلاشى أحدهما تدريجيًا إلى الآخر.

إليك طريقة تطبيق ملء متدرج على شكل باستخدام Aspose.Slides:

  1. إنشاء كائن من الفئة Presentation.
  2. الحصول على مرجع إلى شريحة بواسطة فهرستها.
  3. إضافة IAutoShape إلى الشريحة.
  4. تعيين FillType الخاص بالشكل إلى Gradient.
  5. إضافة اللونين المفضّلين لديك مع تحديد المواقع باستخدام طرق Add لمجموعة نقاط التدرج التي تُعرض عبر الواجهة IGradientFormat.
  6. حفظ العرض المعدل كملف PPTX.
#include <DOM/FillType.h>
#include <DOM/GradientDirection.h>
#include <DOM/GradientShape.h>
#include <DOM/IAutoShape.h>
#include <DOM/IFillFormat.h>
#include <DOM/IGradientFormat.h>
#include <DOM/IGradientStopCollection.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/Presentation.h>
#include <DOM/PresetColor.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;

// إنشاء كائن من فئة Presentation التي تمثل ملف عرض تقديمي.
auto presentation = MakeObject<Presentation>();

// الحصول على الشريحة الأولى.
auto slide = presentation->get_Slide(0);

// إضافة شكل تلقائي من النوع Ellipse.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Ellipse, 50, 50, 150, 75);

// تطبيق تنسيق تدرج لبيضاوي.
shape->get_FillFormat()->set_FillType(FillType::Gradient);
shape->get_FillFormat()->get_GradientFormat()->set_GradientShape(GradientShape::Linear);

// تعيين اتجاه التدرج.
shape->get_FillFormat()->get_GradientFormat()->set_GradientDirection(GradientDirection::FromCorner2);

// إضافة نقطتي تدرج.
shape->get_FillFormat()->get_GradientFormat()->get_GradientStops()->Add(1.0f, PresetColor::Purple);
shape->get_FillFormat()->get_GradientFormat()->get_GradientStops()->Add(0.0f, PresetColor::Red);

// حفظ ملف PPTX إلى القرص.
presentation->Save(u"gradient_fill.pptx", SaveFormat::Pptx);
presentation->Dispose();

النتيجة:

الإهليلج بملء متدرج

ملء نمطي

في PowerPoint، يتيح لك ملء النمط خيار تنسيق يسمح بتطبيق تصميم ذو لونين—مثل النقاط أو الخطوط المتوازية أو التظليل المتقاطع أو المربعات—على الشكل. يمكنك اختيار ألوان مخصصة لخلفية ونص النمط.

توفر Aspose.Slides أكثر من 45 نمطًا مُعرّفًا مسبقًا يمكنك تطبيقها على الأشكال لتعزيز الجاذبية البصرية لعروضك التقديمية. حتى بعد اختيار نمط مُعرّف مسبقًا، لا يزال بإمكانك تحديد الألوان الدقيقة التي سيستخدمها.

لتطبيق ملء نمط على شكل باستخدام Aspose.Slides:

  1. إنشاء كائن من الفئة Presentation.
  2. الحصول على مرجع إلى شريحة بواسطة فهرستها.
  3. إضافة IAutoShape إلى الشريحة.
  4. تعيين FillType الخاص بالشكل إلى Pattern.
  5. اختيار نمط نمطي من الخيارات المعرّفة مسبقًا.
  6. تعيين Background Color للنمط.
  7. تعيين Foreground Color للنمط.
  8. حفظ العرض المعدل كملف PPTX.
#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IColorFormat.h>
#include <DOM/IFillFormat.h>
#include <DOM/IPatternFormat.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/PatternStyle.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
using namespace System::Drawing;

// إنشاء كائن من فئة Presentation التي تمثل ملف عرض تقديمي.
auto presentation = MakeObject<Presentation>();

// الحصول على الشريحة الأولى.
auto slide = presentation->get_Slide(0);

// إضافة شكل تلقائي من النوع Rectangle.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);

// تعيين نوع التعبئة إلى Pattern.
shape->get_FillFormat()->set_FillType(FillType::Pattern);

// تعيين نمط النمط.
shape->get_FillFormat()->get_PatternFormat()->set_PatternStyle(PatternStyle::Trellis);

// تعيين لون الخلفية ولون المقدمة للنمط.
shape->get_FillFormat()->get_PatternFormat()->get_BackColor()->set_Color(Color::get_LightGray());
shape->get_FillFormat()->get_PatternFormat()->get_ForeColor()->set_Color(Color::get_Yellow());

// حفظ ملف PPTX إلى القرص.
presentation->Save(u"pattern_fill.pptx", SaveFormat::Pptx);
presentation->Dispose();

النتيجة:

المستطيل بملء نمطي

ملء صورة

في PowerPoint، يُعد ملء الصورة خيارًا تنسيقيًا يتيح لك إدراج صورة داخل الشكل—مستخدمًا الصورة كخلفية للشكل.

إليك طريقة تطبيق ملء صورة على شكل باستخدام Aspose.Slides:

  1. إنشاء كائن من الفئة Presentation.
  2. الحصول على مرجع إلى شريحة بواسطة فهرستها.
  3. إضافة IAutoShape إلى الشريحة.
  4. تعيين FillType الخاص بالشكل إلى Picture.
  5. تعيين وضع ملء الصورة إلى Tile (أو أي وضع مفضَّل آخر).
  6. إنشاء كائن IPPImage من الصورة التي تريد استخدامها.
  7. تمرير الصورة إلى طريقة ISlidesPicture.set_Image.
  8. حفظ العرض المعدل كملف PPTX.

لنفترض أن لدينا ملف “lotus.png” بالصورة التالية:

صورة اللوتس

#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IFillFormat.h>
#include <DOM/IImageCollection.h>
#include <DOM/IPictureFillFormat.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/ISlidesPicture.h>
#include <DOM/PictureFillMode.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <IImage.h>
#include <Util/Images.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;

// إنشاء كائن من الفئة Presentation التي تمثل ملف عرض تقديمي.
auto presentation = MakeObject<Presentation>();

// الحصول على الشريحة الأولى.
auto slide = presentation->get_Slide(0);

// إضافة شكل تلقائي من النوع Rectangle.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 255, 130);

// تعيين نوع التعبئة إلى Picture.
shape->get_FillFormat()->set_FillType(FillType::Picture);

// تعيين وضع ملء الصورة.
shape->get_FillFormat()->get_PictureFillFormat()->set_PictureFillMode(PictureFillMode::Tile);

// تحميل صورة وإضافتها إلى موارد العرض.
auto image = Images::FromFile(u"lotus.png");
auto picture = presentation->get_Images()->AddImage(image);
image->Dispose();

// تعيين الصورة.
shape->get_FillFormat()->get_PictureFillFormat()->get_Picture()->set_Image(picture);

// حفظ ملف PPTX إلى القرص.
presentation->Save(u"picture_fill.pptx", SaveFormat::Pptx);
presentation->Dispose();

النتيجة:

الشكل بملء صورة

بلاط الصورة كنقش

إذا كنت ترغب في ضبط صورة مبلطة كنقش وتخصيص سلوك البلاط، يمكنك استخدام الطرق التالية من واجهة IPictureFillFormat والفئة PictureFillFormat:

  • set_PictureFillMode: تُحدد وضع ملء الصورة — إما Tile أو Stretch.
  • set_TileAlignment: تحدد محاذاة البلاطات داخل الشكل.
  • set_TileFlip: تتحكم فيما إذا كان البلاط يُقلب أفقياً أو عمودياً أو كليهما.
  • set_TileOffsetX: تحدد الإزاحة الأفقية للبلاط (بالنقطة) من أصل الشكل.
  • set_TileOffsetY: تحدد الإزاحة العمودية للبلاط (بالنقطة) من أصل الشكل.
  • set_TileScaleX: تعرّف مقياس البلاط الأفقي كنسبة مئوية.
  • set_TileScaleY: تعرّف مقياس البلاط العمودي كنسبة مئوية.

الكود التالي يوضح كيفية إضافة شكل مستطيل بملء صورة مبلّط وتكوين خيارات البلاط:

#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IFillFormat.h>
#include <DOM/IImageCollection.h>
#include <DOM/IPictureFillFormat.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/ISlidesPicture.h>
#include <DOM/PictureFillMode.h>
#include <DOM/Presentation.h>
#include <DOM/RectangleAlignment.h>
#include <DOM/ShapeType.h>
#include <DOM/TileFlip.h>
#include <Export/SaveFormat.h>
#include <IImage.h>
#include <Util/Images.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;

// إنشاء كائن من الفئة Presentation التي تمثل ملف عرض تقديمي.
auto presentation = MakeObject<Presentation>();

// الحصول على الشريحة الأولى.
auto firstSlide = presentation->get_Slide(0);

// إضافة شكل تلقائي من نوع المستطيل.
auto shape = firstSlide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 190, 95);

// تعيين نوع التعبئة للشكل إلى Picture.
shape->get_FillFormat()->set_FillType(FillType::Picture);

// تحميل الصورة وإضافتها إلى موارد العرض.
auto sourceImage = Images::FromFile(u"lotus.png");
auto presentationImage = presentation->get_Images()->AddImage(sourceImage);
sourceImage->Dispose();

// إسناد الصورة إلى الشكل.
auto pictureFillFormat = shape->get_FillFormat()->get_PictureFillFormat();
pictureFillFormat->get_Picture()->set_Image(presentationImage);

// تكوين وضع ملء الصورة وخصائص التجانب.
pictureFillFormat->set_PictureFillMode(PictureFillMode::Tile);
pictureFillFormat->set_TileOffsetX(-32);
pictureFillFormat->set_TileOffsetY(-32);
pictureFillFormat->set_TileScaleX(50);
pictureFillFormat->set_TileScaleY(50);
pictureFillFormat->set_TileAlignment(RectangleAlignment::BottomRight);
pictureFillFormat->set_TileFlip(TileFlip::FlipBoth);

// حفظ ملف PPTX إلى القرص.
presentation->Save(u"tile.pptx", SaveFormat::Pptx);
presentation->Dispose();

النتيجة:

خيارات البلاط

ملء بلون صلب

في PowerPoint، يُعد ملء اللون الصلب خيارًا تنسيقيًا يملأ الشكل بلون موحد واحد. يتم تطبيق هذا اللون الخلفي البسيط دون أي تدرجات أو نقوش أو أنماط.

لتطبيق ملء بلون صلب على شكل باستخدام Aspose.Slides، اتبع الخطوات التالية:

  1. إنشاء كائن من الفئة Presentation.
  2. الحصول على مرجع إلى شريحة بواسطة فهرستها.
  3. إضافة IAutoShape إلى الشريحة.
  4. تعيين FillType الخاص بالشكل إلى Solid.
  5. تعيين اللون المفضّل للملء للشكل.
  6. حفظ العرض المعدل كملف PPTX.
#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IColorFormat.h>
#include <DOM/IFillFormat.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
using namespace System::Drawing;

// إنشاء كائن من الفئة Presentation التي تمثل ملف عرض تقديمي.
auto presentation = MakeObject<Presentation>();

// الحصول على الشريحة الأولى.
auto slide = presentation->get_Slide(0);

// إضافة شكل تلقائي من النوع Rectangle.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);

// تعيين نوع التعبئة إلى Solid.
shape->get_FillFormat()->set_FillType(FillType::Solid);

// تعيين لون التعبئة.
shape->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Yellow());

// حفظ ملف PPTX إلى القرص.
presentation->Save(u"solid_color_fill.pptx", SaveFormat::Pptx);
presentation->Dispose();

النتيجة:

الشكل بملء لون صلب

تعيين الشفافية

في PowerPoint، عند تطبيق ملء بلون صلب أو تدرج أو صورة أو نقش على الأشكال، يمكنك أيضًا تعيين مستوى الشفافية للتحكم في شفافية الملء. قيمة شفافية أعلى تجعل الشكل أكثر شفافية، مما يسمح لل背景 أو الكائنات التحتية أن تكون مرئية جزئيًا.

تتيح لك Aspose.Slides تعيين مستوى الشفافية عن طريق تعديل قيمة الـ alpha في اللون المستخدم للملء. إليك الطريقة:

  1. إنشاء كائن من الفئة Presentation.
  2. الحصول على مرجع إلى شريحة بواسطة فهرستها.
  3. إضافة IAutoShape إلى الشريحة.
  4. تعيين FillType إلى Solid.
  5. استخدام Color لتحديد لون مع شفافية (مكوّن alpha يتحكم في الشفافية).
  6. حفظ العرض.
#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IColorFormat.h>
#include <DOM/IFillFormat.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
using namespace System::Drawing;

// إنشاء كائن من الفئة Presentation التي تمثل ملف عرض تقديمي.
auto presentation = MakeObject<Presentation>();

// الحصول على الشريحة الأولى.
auto slide = presentation->get_Slide(0);

// إضافة شكل مستطيل صلب تلقائي.
auto solidShape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);

// إضافة شكل مستطيل شفاف تلقائي فوق الشكل الصلب.
auto transparentShape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 80, 80, 150, 75);
transparentShape->get_FillFormat()->set_FillType(FillType::Solid);
transparentShape->get_FillFormat()->get_SolidFillColor()->set_Color(Color::FromArgb(204, 255, 255, 0));

// حفظ ملف PPTX إلى القرص.
presentation->Save(u"shape_transparency.pptx", SaveFormat::Pptx);
presentation->Dispose();

النتيجة:

الشكل الشفاف

تدوير الأشكال

تتيح لك Aspose.Slides تدوير الأشكال في عروض PowerPoint. يمكن أن يكون ذلك مفيدًا عند وضع العناصر البصرية مع احتياجات محاذاة أو تصميم معينة.

لتدوير شكل على شريحة، اتبع الخطوات التالية:

  1. إنشاء كائن من الفئة Presentation.
  2. الحصول على مرجع إلى شريحة بواسطة فهرستها.
  3. إضافة IAutoShape إلى الشريحة.
  4. تعيين خاصية دوران الشكل إلى الزاوية المطلوبة.
  5. حفظ العرض.
#include <DOM/IAutoShape.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;

// إنشاء كائن من الفئة Presentation التي تمثل ملف عرض تقديمي.
auto presentation = MakeObject<Presentation>();

// الحصول على الشريحة الأولى.
auto slide = presentation->get_Slide(0);

// إضافة شكل تلقائي من النوع Rectangle.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);

// تدوير الشكل بمقدار 5 درجات.
shape->set_Rotation(5);

// حفظ ملف PPTX إلى القرص.
presentation->Save(u"shape_rotation.pptx", SaveFormat::Pptx);
presentation->Dispose();

النتيجة:

دوران الشكل

إضافة تأثيرات الحافة ثلاثية الأبعاد

تسمح لك Aspose.Slides بتطبيق تأثيرات حافة ثلاثية الأبعاد على الأشكال عن طريق تكوين خصائصها ThreeDFormat.

لإضافة تأثيرات حافة ثلاثية الأبعاد إلى شكل، اتبع الخطوات التالية:

  1. إنشاء كائن من الفئة Presentation.
  2. الحصول على مرجع إلى شريحة بواسطة فهرستها.
  3. إضافة IAutoShape إلى الشريحة.
  4. تكوين ThreeDFormat الخاص بالشكل لتحديد إعدادات الحافة.
  5. حفظ العرض.
#include <DOM/BevelPresetType.h>
#include <DOM/CameraPresetType.h>
#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/ICamera.h>
#include <DOM/IColorFormat.h>
#include <DOM/IFillFormat.h>
#include <DOM/ILightRig.h>
#include <DOM/ILineFillFormat.h>
#include <DOM/ILineFormat.h>
#include <DOM/IShapeBevel.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/IThreeDFormat.h>
#include <DOM/LightRigPresetType.h>
#include <DOM/LightingDirection.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
using namespace System::Drawing;

// إنشاء كائن من فئة Presentation.
auto presentation = MakeObject<Presentation>();

auto slide = presentation->get_Slide(0);

// إضافة شكل إلى الشريحة.
auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Ellipse, 50, 50, 100, 100);
shape->get_FillFormat()->set_FillType(FillType::Solid);
shape->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Green());
shape->get_LineFormat()->get_FillFormat()->set_FillType(FillType::Solid);
shape->get_LineFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Orange());
shape->get_LineFormat()->set_Width(2.0);

// Set the shape's ThreeDFormat properties.
shape->get_ThreeDFormat()->set_Depth(4.0);
shape->get_ThreeDFormat()->get_BevelTop()->set_BevelType(BevelPresetType::Circle);
shape->get_ThreeDFormat()->get_BevelTop()->set_Height(6);
shape->get_ThreeDFormat()->get_BevelTop()->set_Width(6);
shape->get_ThreeDFormat()->get_Camera()->set_CameraType(CameraPresetType::OrthographicFront);
shape->get_ThreeDFormat()->get_LightRig()->set_LightType(LightRigPresetType::ThreePt);
shape->get_ThreeDFormat()->get_LightRig()->set_Direction(LightingDirection::Top);

// حفظ العرض التقديمي كملف PPTX.
presentation->Save(u"3D_bevel_effect.pptx", SaveFormat::Pptx);
presentation->Dispose();

النتيجة:

تأثير الحافة ثلاثية الأبعاد

إضافة تأثيرات الدوران ثلاثية الأبعاد

تسمح لك Aspose.Slides بتطبيق تأثيرات الدوران ثلاثية الأبعاد على الأشكال عن طريق تكوين خصائصها ThreeDFormat.

لتطبيق دوران ثلاثي الأبعاد على شكل:

  1. إنشاء كائن من الفئة Presentation.
  2. الحصول على مرجع إلى شريحة بواسطة فهرستها.
  3. إضافة IAutoShape إلى الشريحة.
  4. استخدام set_CameraType وset_LightType لتحديد دوران ثلاثي الأبعاد.
  5. حفظ العرض.
#include <DOM/CameraPresetType.h>
#include <DOM/IAutoShape.h>
#include <DOM/ICamera.h>
#include <DOM/ILightRig.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/ITextFrame.h>
#include <DOM/IThreeDFormat.h>
#include <DOM/LightRigPresetType.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;

// إنشاء كائن من الفئة Presentation.
auto presentation = MakeObject<Presentation>();

auto slide = presentation->get_Slide(0);

auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);
shape->get_TextFrame()->set_Text(u"Hello, Aspose!");

shape->get_ThreeDFormat()->set_Depth(6);
shape->get_ThreeDFormat()->get_Camera()->SetRotation(40, 35, 20);
shape->get_ThreeDFormat()->get_Camera()->set_CameraType(CameraPresetType::IsometricLeftUp);
shape->get_ThreeDFormat()->get_LightRig()->set_LightType(LightRigPresetType::Balanced);

// حفظ العرض التقديمي كملف PPTX.
presentation->Save(u"3D_rotation_effect.pptx", SaveFormat::Pptx);
presentation->Dispose();

النتيجة:

تأثير الدوران ثلاثي الأبعاد

التحكم في عرض أبيض-أسود للأشكال

طريقة IShape::set_BlackWhiteMode تحدد كيفية عرض شكل فردي عندما يُعرض أو يُعالج العرض في وضع أبيض-أسود. لا تُفعّل العرض بالأبيض-الأسود بحد ذاتها، ولا تغير ملء الشكل أو خطه أو تنسيقه الآخر في وضع اللون العادي.

استخدم قيمة من تعداد BlackWhiteMode لاختيار السلوك المطلوب. على سبيل المثال، Automatic يترك تطبيق العرض يختار التحويل، وGray وLightGray يستخدمان اللون الرمادي، وBlackWhite يستخدم فقط الأسود والأبيض، وBlack وWhite يفرضان لونًا واحدًا، وColor يحافظ على اللون الطبيعي، وHidden يُخفِي الشكل في وضع أبيض-أسود. NotDefined يعني عدم تعيين وضع على مستوى الشكل.

الكود التالي يخلق شكلًا ملونًا ويظهره رماديًا في وضع العرض بالأبيض-أسود:

#include <DOM/BlackWhiteMode.h>
#include <DOM/FillType.h>
#include <DOM/IAutoShape.h>
#include <DOM/IFillFormat.h>
#include <DOM/IShapeCollection.h>
#include <DOM/ISlide.h>
#include <DOM/Presentation.h>
#include <DOM/ShapeType.h>
#include <Export/SaveFormat.h>
#include <drawing/color.h>
#include <system/smart_ptr.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
using namespace System::Drawing;

auto presentation = MakeObject<Presentation>();
auto slide = presentation->get_Slide(0);

auto shape = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 50, 50, 200, 100);
shape->get_FillFormat()->set_FillType(FillType::Solid);
shape->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Orange());

// الحفاظ على التعبئة البرتقالية في وضع الألوان، ولكن عرض الشكل بتلوين رمادي في وضع أبيض-أسود.
shape->set_BlackWhiteMode(BlackWhiteMode::Gray);

presentation->Save(u"shape_black_white_mode.pptx", SaveFormat::Pptx);
presentation->Dispose();

في وضع اللون العادي، يحتفظ المستطيل بملء برتقالي. في سير عمل عرض أبيض-أسود، يستخدم اللون الرمادي لأن وضعه تم تعيينه إلى Gray. يتيح لك ذلك الحفاظ على شريحة ملونة بالكامل مع تحديد مظهر مميز للطباعة أو المعاينة أو غيرها من سير العمل التي تحترم إعدادات العرض بالأبيض-أسود.

إعادة تعيين التنسيق

الكود التالي بلغة C++ يوضح كيفية إعادة تعيين تنسيق شريحة وإرجاع موقع وحجم وتنسيق جميع الأشكال ذات العنصر النائب على LayoutSlide إلى إعداداتها الافتراضية:

#include <DOM/ISlide.h>
#include <DOM/ISlideCollection.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/enumerator_adapter.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;

auto presentation = MakeObject<Presentation>(u"sample.pptx");

for (auto&& slide : System::IterateOver(presentation->get_Slides()))
{
    // إعادة ضبط كل شكل على الشريحة التي تحتوي على عنصر نائب في التخطيط.
    slide->Reset();
}

presentation->Save(u"reset_formatting.pptx", SaveFormat::Pptx);
presentation->Dispose();

الأسئلة الشائعة

هل يؤثر تنسيق الشكل على حجم ملف العرض النهائي؟

بشكل طفيف فقط. الصور والوسائط المضمنة تشغل معظم مساحة الملف، بينما معلمات الشكل مثل الألوان والتأثيرات والتدرجات تُخزن كبيانات وصفية وتضيف تقريبًا لا شيء إلى الحجم.

كيف يمكنني اكتشاف الأشكال في شريحة التي تشترك في تنسيق متطابق حتى أتمكن من تجميعها؟

قارن خصائص التنسيق الرئيسية لكل شكل — إعدادات الملء، الخط، والتأثيرات. إذا تطابقت جميع القيم المقابلة، اعتبر أن أنماطها متطابقة وقم بتجميع تلك الأشكال منطقياً، مما يبسط إدارة الأنماط لاحقًا.

هل يمكنني حفظ مجموعة من أنماط الشكل المخصصة في ملف منفصل لإعادة استخدامها في عروض أخرى؟

نعم. احفظ الأشكال النموذجية ذات الأنماط المطلوبة في شريحة قالب أو ملف .POTX. عند إنشاء عرض جديد، افتح القالب، استنسخ الأشكال ذات الأنماط التي تحتاجها، وأعد تطبيق تنسيقها حسب الحاجة.