إدارة أدلة الرسم في العروض التقديمية باستخدام C++

نظرة عامة

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

أدلة الرسم هي أدوات تحرير، ليست محتوىً للشرائح. لا تظهر في عرض الشرائح أو في المخرجات المُصدَّرة. تُظهر Aspose.Slides for C++ هذه الأدلة عبر واجهة IDrawingGuidesCollection . يُمثَّل الدليل بواسطة IDrawingGuide وله اتجاه، موضع، ولون.

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

إضافة أدلة إلى عرض الشريحة

استخدم ICommonSlideViewProperties::get_DrawingGuides لإدارة الأدلة المعروضة أثناء تحرير الشرائح العادية. استدعِ IDrawingGuidesCollection::Add مع قيمة Orientation وموضع بالنقاط.

المثال التالي يضيف دليلًا عموديًا واحدًا إلى يمين مركز الشريحة ودليلًا أفقيًا أسفله:

#include <DOM/ICommonSlideViewProperties.h>
#include <DOM/IDrawingGuidesCollection.h>
#include <DOM/ISlideSize.h>
#include <DOM/IViewProperties.h>
#include <DOM/Orientation.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;

auto presentation = System::MakeObject<Presentation>();

auto slideSize = presentation->get_SlideSize()->get_Size();
auto guides = presentation->get_ViewProperties()->get_SlideViewProperties()->get_DrawingGuides();

guides->Add(Orientation::Vertical, slideSize.get_Width() / 2 + 12.5f);
guides->Add(Orientation::Horizontal, slideSize.get_Height() / 2 + 12.5f);

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

الوصول إلى أدلة الرسم

توفر الطريقة IDrawingGuidesCollection::get_Count والطريقة IDrawingGuidesCollection::idx_get إمكانية الوصول إلى الأدلة الموجودة. تُعيد الطرق IDrawingGuide::get_Orientation، IDrawingGuide::get_Position، وIDrawingGuide::get_Color الخصائص الحالية للدليل. يمكن لطرق الضبط المقابلة تعديل تلك الخصائص.

المثال التالي يقرأ أدلة عرض الشريحة من العرض التقديمي الذي تم إنشاؤه أعلاه:

#include <DOM/ICommonSlideViewProperties.h>
#include <DOM/IDrawingGuide.h>
#include <DOM/IDrawingGuidesCollection.h>
#include <DOM/IViewProperties.h>
#include <DOM/Presentation.h>
#include <drawing/color.h>
#include <system/console.h>

using namespace Aspose::Slides;

auto presentation = System::MakeObject<Presentation>(u"drawing-guides.pptx");
auto guides = presentation->get_ViewProperties()->get_SlideViewProperties()->get_DrawingGuides();

for (int32_t index = 0; index < guides->get_Count(); index++)
{
    auto guide = guides->idx_get(index);
    System::Console::WriteLine(
        System::String::Format(
            u"Guide {0}: orientation = {1}, position = {2}, color = {3}",
            index,
            guide->get_Orientation(),
            guide->get_Position(),
            guide->get_Color()));
}

presentation->Dispose();

إضافة أدلة إلى قوالب الشرائح وتخطيطاتها

يمكن لقالب الشريحة وكل من تخطيطاتها أن يمتلك مجموعات أدلة رسم خاصة به. استخدم IMasterSlide::get_DrawingGuides لقالب الشريحة وILayoutSlide::get_DrawingGuides لتخطيط الشريحة.

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

#include <DOM/IDrawingGuidesCollection.h>
#include <DOM/ILayoutSlide.h>
#include <DOM/IMasterSlide.h>
#include <DOM/ISlideSize.h>
#include <DOM/Orientation.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;

auto presentation = System::MakeObject<Presentation>();

auto slideSize = presentation->get_SlideSize()->get_Size();
auto masterGuides = presentation->get_Master(0)->get_DrawingGuides();
auto layoutGuides = presentation->get_LayoutSlide(0)->get_DrawingGuides();

masterGuides->Add(Orientation::Vertical, slideSize.get_Width() / 2 - 20.0f);
layoutGuides->Add(Orientation::Horizontal, slideSize.get_Height() / 2 + 20.0f);

presentation->Save(u"master-layout-drawing-guides.pptx", SaveFormat::Pptx);
presentation->Dispose();

إضافة أدلة إلى قوالب الملاحظات والنشرات

تدعم قوالب الملاحظات وقوالب النشرات أيضًا أدلة الرسم. استخدم IMasterNotesSlide::get_DrawingGuides وIMasterHandoutSlide::get_DrawingGuides للوصول إلى مجموعاتهم. إذا لم يحتوي العرض التقديمي على أحد هذه القوالب، فإن IMasterNotesSlideManager::SetDefaultMasterNotesSlide أو IMasterHandoutSlideManager::SetDefaultMasterHandoutSlide ينشئ القالب الافتراضي ويعيده.

المثال التالي يضيف دليلًا أفقيًا إلى قالب ملاحظات ودليلًا عموديًا إلى قالب نشرة:

#include <DOM/IDrawingGuidesCollection.h>
#include <DOM/IMasterHandoutSlide.h>
#include <DOM/IMasterHandoutSlideManager.h>
#include <DOM/IMasterNotesSlide.h>
#include <DOM/IMasterNotesSlideManager.h>
#include <DOM/INotesSize.h>
#include <DOM/Orientation.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;

auto presentation = System::MakeObject<Presentation>();

auto notesSize = presentation->get_NotesSize()->get_Size();
auto notesMaster = presentation->get_MasterNotesSlideManager()->SetDefaultMasterNotesSlide();
auto handoutMaster = presentation->get_MasterHandoutSlideManager()->SetDefaultMasterHandoutSlide();

notesMaster->get_DrawingGuides()->Add(Orientation::Horizontal, notesSize.get_Height() / 2 + 50.0f);
handoutMaster->get_DrawingGuides()->Add(Orientation::Vertical, notesSize.get_Width() / 2 - 50.0f);

presentation->Save(u"notes-handout-drawing-guides.pptx", SaveFormat::Pptx);
presentation->Dispose();

مسح أدلة الرسم

استدعِ IDrawingGuidesCollection::Clear لإزالة جميع الأدلة من مجموعة معينة. مسح مجموعة واحدة لا يؤثر على الأدلة المخزنة في نطاق آخر.

المثال التالي يمسح أدلة عرض الشريحة وجميع الأدلة على قوالب الشرائح، وتخطيطات الشرائح، وقالب الملاحظات، وقالب النشرة دون إنشاء القوالب المفقودة:

#include <DOM/ICommonSlideViewProperties.h>
#include <DOM/IDrawingGuidesCollection.h>
#include <DOM/IGlobalLayoutSlideCollection.h>
#include <DOM/ILayoutSlide.h>
#include <DOM/IMasterHandoutSlide.h>
#include <DOM/IMasterHandoutSlideManager.h>
#include <DOM/IMasterNotesSlide.h>
#include <DOM/IMasterNotesSlideManager.h>
#include <DOM/IMasterSlide.h>
#include <DOM/IMasterSlideCollection.h>
#include <DOM/IViewProperties.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;

auto presentation = System::MakeObject<Presentation>(u"presentation-with-guides.pptx");

presentation->get_ViewProperties()->get_SlideViewProperties()->get_DrawingGuides()->Clear();

for (auto&& masterSlide : presentation->get_Masters())
{
    masterSlide->get_DrawingGuides()->Clear();
}

for (auto&& layoutSlide : presentation->get_LayoutSlides())
{
    layoutSlide->get_DrawingGuides()->Clear();
}

auto notesMaster = presentation->get_MasterNotesSlideManager()->get_MasterNotesSlide();
if (notesMaster != nullptr)
{
    notesMaster->get_DrawingGuides()->Clear();
}

auto handoutMaster = presentation->get_MasterHandoutSlideManager()->get_MasterHandoutSlide();
if (handoutMaster != nullptr)
{
    handoutMaster->get_DrawingGuides()->Clear();
}

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

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

هل تظهر أدلة الرسم في عرض الشرائح أو الصور المصدَّرة؟

لا. أدلة الرسم هي أدوات محاذاة للتحرير ولا تُعرض كمحتوى للعرض التقديمي.

هل يمكن إضافة دليل رسم مباشرة إلى شريحة عادية فردية؟

تُخزن أدلة تحرير الشرائح العادية في خصائص عرض الشرائح للعرض التقديمي. تتوفر مجموعات أدلة منفصلة لقوالب الشرائح، وتخطيطات الشرائح، وقوالب الملاحظات، وقوالب النشرات.

ما الوحدات المستخدمة لمواضع الأدلة؟

يتم تحديد الموضع بالنقاط، حيث 72 نقطة تساوي بوصة واحدة. تُقاس المواضع الرأسية من الحافة اليسرى، وتُقاس المواضع الأفقية من الحافة العلوية.

هل يؤدي مسح أدلة الرسم إلى إزالة الأشكال أو تغيير محتوى الشريحة؟

لا. طريقة Clear تزيل فقط الأدلة في المجموعة المحددة. تبقى الأشكال وبقية محتوى الشريحة دون تعديل.