إدارة كائنات حبر العرض التقديمي في C++

المقدمة

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

تحتوي مساحة الأسماء Aspose.Slides.Ink على الفئات والواجهات اللازمة للعمل مع كائنات الحبر. على سبيل المثال، تمثل الواجهة IInk كائن حبر على الشريحة.

الاختلافات بين الكائنات العادية وكائنات الحبر

عادةً ما يتم تمثيل الكائنات في شريحة PowerPoint بواسطة كائنات الشكل. في أبسط صورها، الشكل هو حاوية تعرف مساحة الكائن نفسه (إطارها) بالإضافة إلى خصائص مثل حجم الحاوية وشكلها والخلفية. لمزيد من المعلومات، راجع Shape Layout Format.

ومع ذلك، عند معالجة PowerPoint لكائن حبر، يتجاهل جميع خصائص إطار الكائن (الحاوية) باستثناء حجمه. يتم تحديد حجم منطقة الحاوية بواسطة طريقتي IShape::get_Width وIShape::get_Height:

ink_powerpoint1

آثار الحبر

آثار الحبر هي عنصر أساسي يُستخدم لتسجيل مسار القلم أثناء كتابة الحبر الرقمي. يُخزن الأثر تسلسلًا من النقاط المتصلة.

أبسط شكل من أشكال الترميز يُحدد إحداثيات X وY لكل نقطة عينة. عند عرض جميع النقاط المتصلة، ينتج عنها صورة مثل هذه:

ink_powerpoint2

خصائص الفرشاة للرسم

تُستخدم الفرشاة لرسم الخطوط التي تربط نقاط أثر الحبر. للفرشاة لونها وحجمها الخاصين، يُمثلها الطريقتان IInkBrush::get_Color وIInkBrush::get_Size.

تعيين لون فرشاة الحبر

هذا الكود C++ يوضح كيفية تعيين لون فرشاة الحبر:

#include <DOM/Ink/IInk.h>
#include <DOM/Ink/IInkBrush.h>
#include <DOM/Ink/IInkTrace.h>
#include <DOM/Presentation.h>
#include <drawing/color.h>
#include <system/smart_ptr.h>

using Aspose::Slides::Ink::IInk;
using Aspose::Slides::Presentation;
using System::ExplicitCast;
using System::MakeObject;

auto presentation = MakeObject<Presentation>(u"pres.pptx");
auto ink = ExplicitCast<IInk>(presentation->get_Slide(0)->get_Shape(0));
auto inkTrace = ink->get_Traces()[0];
auto brush = inkTrace->get_Brush();
brush->set_Color(System::Drawing::Color::get_Red());

presentation->Dispose();

تعيين حجم فرشاة الحبر

هذا الكود C++ يوضح كيفية تعيين حجم فرشاة الحبر:

#include <DOM/Ink/IInk.h>
#include <DOM/Ink/IInkBrush.h>
#include <DOM/Ink/IInkTrace.h>
#include <DOM/Presentation.h>
#include <drawing/size_f.h>
#include <system/smart_ptr.h>

using Aspose::Slides::Ink::IInk;
using Aspose::Slides::Presentation;
using System::ExplicitCast;
using System::MakeObject;

auto presentation = MakeObject<Presentation>(u"pres.pptx");
auto ink = ExplicitCast<IInk>(presentation->get_Slide(0)->get_Shape(0));
auto inkTrace = ink->get_Traces()[0];
auto brush = inkTrace->get_Brush();
brush->set_Size(System::Drawing::SizeF(5.0f, 10.0f));

presentation->Dispose();

عادةً لا يتطابق عرض وارتفاع الفرشاة، لذا لا يعرض PowerPoint حجم الفرشاة (قسم البيانات المقابل يصبح رماديًا). عندما يتطابق عرض وارتفاع الفرشاة، يعرض PowerPoint حجمه بهذه الطريقة:

ink_powerpoint3

لتوضيح الأمر، لنزيد ارتفاع كائن الحبر ونستعرض الأبعاد المهمة:

ink_powerpoint4

الحاوية (الإطار) لا تأخذ في الاعتبار حجم الفرشات—دائمًا ما تفترض أن سمك الخط صفر (انظر الصورة السابقة).

لذا، لتحديد المنطقة المرئية لكامل كائن الحبر، يجب أخذ حجم فرشاة آثاره في الاعتبار. هنا، تم تحجيم الكائن الهدف (أثر نص مكتوب يدويًا) ليتناسب مع حجم الحاوية (الإطار). عندما يتغير حجم الحاوية، يبقى حجم الفرشاة ثابتًا، والعكس صحيح.

ink_powerpoint5

يستخدم PowerPoint سلوكًا مشابهًا لكائنات النص:

ink_powerpoint6

التحكم في مظهر الحبر أثناء التصدير والعرض

توفر Aspose.Slides الواجهة IInkOptions للتحكم في كيفية ظهور كائنات الحبر في المخرجات المصدرة أو المعروضة. يمكنك استخدام طرقها لإخفاء الحبر تمامًا أو لتغيير طريقة تفسير عمليات قناع فرشاة الحبر.

تتوفر خيارات الحبر من خلال خيارات التصدير أو العرض لعدة أنواع من المخرجات:

الإخراج طريقة خيارات الحبر
PDF PdfOptions::get_InkOptions
HTML HtmlOptions::get_InkOptions
SVG SVGOptions::get_InkOptions
TIFF TiffOptions::get_InkOptions
صورة الشريحة RenderingOptions::get_InkOptions

الضبطان المتاحان من خلال هذه الطرق هما:

  • IInkOptions::set_HideInk يحدد ما إذا كانت كائنات الحبر تُضمّن في المخرج. القيمة الافتراضية هي false.
  • IInkOptions::set_InterpretMaskOpAsOpacity يحدد ما إذا كانت عملية القناع تُفسَّر كعتامة عند عرض فرشاة الحبر. القيمة الافتراضية هي true؛ عيّنها إلى false لاستخدام عملية ROP بدلاً من ذلك.

إخفاء كائنات الحبر في مخرجات PDF

بشكل افتراضي، تظل كائنات الحبر مرئية أثناء التصدير. استدعِ IInkOptions::set_HideInk مع true عندما تحتاج إلى مخرج نظيف بدون تعليقات مكتوبة يدويًا أو محتوى حبر آخر.

المثال التالي بلغة C++ يصدر عرض تقديمي إلى PDF مع إخفاء جميع كائنات الحبر:

#include <DOM/Presentation.h>
#include <Export/IInkOptions.h>
#include <Export/PdfOptions.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>

using Aspose::Slides::Presentation;
using Aspose::Slides::Export::PdfOptions;
using Aspose::Slides::Export::SaveFormat;
using System::MakeObject;

auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto pdfOptions = MakeObject<PdfOptions>();
pdfOptions->get_InkOptions()->set_HideInk(true);

presentation->Save(u"presentation_without_ink.pdf", SaveFormat::Pdf, pdfOptions);
presentation->Dispose();

إخفاء كائنات الحبر عند عرض شريحة كصورة

لإخفاء كائنات الحبر عند عرض الشرائح كصور نقطية، قم بتكوين RenderingOptions::get_InkOptions ومرّر خيارات العرض إلى طريقة ISlide::GetImage.

المثال التالي بلغة C++ يعرض الشريحة الأولى كصورة PNG بدون كائنات حبر:

#include <DOM/ISlide.h>
#include <DOM/Presentation.h>
#include <Export/IInkOptions.h>
#include <Export/RenderingOptions.h>
#include <IImage.h>
#include <ImageFormat.h>
#include <system/smart_ptr.h>

using Aspose::Slides::ImageFormat;
using Aspose::Slides::Presentation;
using Aspose::Slides::Export::RenderingOptions;
using System::MakeObject;

auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto renderingOptions = MakeObject<RenderingOptions>();
renderingOptions->get_InkOptions()->set_HideInk(true);

auto image = presentation->get_Slide(0)->GetImage(renderingOptions);
image->Save(u"slide_without_ink.png", ImageFormat::Png);

image->Dispose();
presentation->Dispose();

التحكم في عرض قناع الحبر

طريقة IInkOptions::set_InterpretMaskOpAsOpacity تتحكم في طريقة تفسير عمليات القناع عند عرض فرشات الحبر. القيمة الافتراضية هي true، أي استخدام العتامة. استدعِ الطريقة مع false لاستخدام عملية ROP بدلاً من ذلك.

المثال التالي بلغة C++ يصدر شريحة إلى SVG ويستخدم عرضًا قائمًا على ROP لعمليات قناع الحبر:

#include <DOM/ISlide.h>
#include <DOM/Presentation.h>
#include <Export/IInkOptions.h>
#include <Export/SVGOptions.h>
#include <system/io/file.h>
#include <system/smart_ptr.h>

using Aspose::Slides::Presentation;
using Aspose::Slides::Export::SVGOptions;
using System::MakeObject;
using System::IO::File;

auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto svgOptions = MakeObject<SVGOptions>();
svgOptions->get_InkOptions()->set_InterpretMaskOpAsOpacity(false);

auto stream = File::Create(u"slide.svg");
presentation->get_Slide(0)->WriteAsSvg(stream, svgOptions);

stream->Dispose();
presentation->Dispose();

يمكن تطبيق نفس الإعداد عبر TiffOptions::get_InkOptions عند تصدير عرض تقديمي أو عرض شريحة إلى TIFF.

اختيار إما إخفاء الحبر أو الحفاظ عليه

استخدم IInkOptions::set_HideInk مع true عندما ينبغي أن يكون الملف المصدر نسخة نظيفة من عرض تقديمي مشروح، على سبيل المثال نسخة نهائية موجهة للتوزيع بدون علامات مراجعة.

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

الأسئلة المتكررة

هل يمكنني تغيير لون أو حجم ضربة حبر موجودة؟

نعم. احصل على الأثر من IInk::get_Traces، ثم غير IInkTrace::get_Brush. يمكنك استدعاء IInkBrush::set_Color وIInkBrush::set_Size على الفرشاة.

هل يؤدي إخفاء الحبر إلى تعديل العرض التقديمي الأصلي؟

لا. IInkOptions::set_HideInk يؤثر فقط على النتيجة المعروضة أو المصدرة؛ ولا يزيل أو يعديل كائنات الحبر في العرض التقديمي الأصلي.

ما هي صيغ التصدير التي تدعم خيارات الحبر؟

يمكنك تكوين خيارات الحبر للـ PDF وHTML وSVG وTIFF وصور الشرائح النقطية من خلال خيارات التصدير أو العرض المقابلة المذكورة أعلاه.

قراءة إضافية