إدارة سمات العروض التقديمية على Android

موضوع العرض يحدد خصائص عناصر التصميم. عندما تختار موضوع عرض، فأنت في الأساس تختار مجموعة محددة من العناصر البصرية وخصائصها.

في PowerPoint، يتألف الموضوع من ألوان، الخطوط، أنماط الخلفية، وتأثيرات.

theme-constituents

تغيير لون السمة

يستخدم موضوع PowerPoint مجموعة محددة من الألوان لعناصر مختلفة على الشريحة. إذا لم تعجبك الألوان، يمكنك تغييرها بتطبيق ألوان جديدة للموضوع. للسماح لك باختيار لون سمة جديد، توفر Aspose.Slides القيم تحت تعداد SchemeColor.

هذا الكود Java يوضح لك كيفية تغيير لون اللكنة للموضوع:

Presentation pres = new Presentation();
try {
    IAutoShape shape = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 10, 10, 100, 100);

    shape.getFillFormat().setFillType(FillType.Solid);

    shape.getFillFormat().getSolidFillColor().setSchemeColor(SchemeColor.Accent4);
} finally {
    if (pres != null) pres.dispose();
}

يمكنك تحديد القيمة الفعلية للون الناتج بهذه الطريقة:

IFillFormatEffectiveData fillEffective = shape.getFillFormat().getEffective();

Color effectiveColor = fillEffective.getSolidFillColor();

System.out.println(String.format("Color [A=%d, R=%d, G=%d, B=%d]", 
        effectiveColor.getAlpha(), effectiveColor.getRed(), effectiveColor.getGreen(), effectiveColor.getBlue()));

لتوضيح عملية تغيير اللون بشكل أكبر، ننشئ عنصرًا آخر ونعيّن له لون اللكنة (من العملية الأولية). ثم نغيّر اللون في السمة:

IAutoShape otherShape = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 10, 120, 100, 100);

otherShape.getFillFormat().setFillType(FillType.Solid);

otherShape.getFillFormat().getSolidFillColor().setSchemeColor(SchemeColor.Accent4);

pres.getMasterTheme().getColorScheme().getAccent4().setColor(Color.RED);

يتم تطبيق اللون الجديد تلقائيًا على كلا العنصرين.

تعيين لون السمة من لوحة ألوان إضافية

عند تطبيق تحويلات الإضاءة على لون السمة الرئيسي(1)، تتشكل ألوان من لوحة الألوان الإضافية(2). يمكنك بعدها تعيين هذه الألوان أو الحصول عليها.

additional-palette-colors

1 - ألوان السمة الرئيسية
2 - ألوان من لوحة الألوان الإضافية.

هذا الكود Java يوضح عملية الحصول على ألوان لوحة إضافية من لون السمة الرئيسي ثم استخدامها في الأشكال:

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    // اللون المميز 4
    IShape shape1 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 10, 50, 50);

    shape1.getFillFormat().setFillType(FillType.Solid);
    shape1.getFillFormat().getSolidFillColor().setSchemeColor(SchemeColor.Accent4);

    // اللون المميز 4، أفتح 80%
    IShape shape2 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 70, 50, 50);

    shape2.getFillFormat().setFillType(FillType.Solid);
    shape2.getFillFormat().getSolidFillColor().setSchemeColor(SchemeColor.Accent4);
    shape2.getFillFormat().getSolidFillColor().getColorTransform().add(ColorTransformOperation.MultiplyLuminance, 0.2f);
    shape2.getFillFormat().getSolidFillColor().getColorTransform().add(ColorTransformOperation.AddLuminance, 0.8f);

    // اللون المميز 4، أفتح 60%
    IShape shape3 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 130, 50, 50);

    shape3.getFillFormat().setFillType(FillType.Solid);
    shape3.getFillFormat().getSolidFillColor().setSchemeColor(SchemeColor.Accent4);
    shape3.getFillFormat().getSolidFillColor().getColorTransform().add(ColorTransformOperation.MultiplyLuminance, 0.4f);
    shape3.getFillFormat().getSolidFillColor().getColorTransform().add(ColorTransformOperation.AddLuminance, 0.6f);

    // اللون المميز 4، أفتح 40%
    IShape shape4 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 190, 50, 50);

    shape4.getFillFormat().setFillType(FillType.Solid);
    shape4.getFillFormat().getSolidFillColor().setSchemeColor(SchemeColor.Accent4);
    shape4.getFillFormat().getSolidFillColor().getColorTransform().add(ColorTransformOperation.MultiplyLuminance, 0.6f);
    shape4.getFillFormat().getSolidFillColor().getColorTransform().add(ColorTransformOperation.AddLuminance, 0.4f);

    // اللون المميز 4، أغمق 25%
    IShape shape5 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 250, 50, 50);

    shape5.getFillFormat().setFillType(FillType.Solid);
    shape5.getFillFormat().getSolidFillColor().setSchemeColor(SchemeColor.Accent4);
    shape5.getFillFormat().getSolidFillColor().getColorTransform().add(ColorTransformOperation.MultiplyLuminance, 0.75f);

    // اللون المميز 4، أغمق 50%
    IShape shape6 = slide.getShapes().addAutoShape(ShapeType.Rectangle, 10, 310, 50, 50);

    shape6.getFillFormat().setFillType(FillType.Solid);
    shape6.getFillFormat().getSolidFillColor().setSchemeColor(SchemeColor.Accent4);
    shape6.getFillFormat().getSolidFillColor().getColorTransform().add(ColorTransformOperation.MultiplyLuminance, 0.5f);

    presentation.save(path + "example_accent4.pptx", SaveFormat.Pptx);
} finally {
    if (presentation != null) presentation.dispose();
}

تخطيط SchemeColor إلى ألوان IColorScheme

عند العمل مع SchemeColor، قد تلاحظ أنه يحتوي على قيم ألوان السمة التالية: Background1، Background2، Text1، وText2.

مع ذلك، تُعيد Presentation.getMasterTheme().getColorScheme() كائنًا من نوع IColorScheme، الذي يعرض الألوان المقابلة كالتالي: Dark1، Dark2، Light1، وLight2.

هذا الاختلاف يكمن فقط في التسمية. هذه القيم تشير إلى نفس فتحات ألوان السمة والربط ثابت:

  • Text1 = Dark1
  • Background1 = Light1
  • Text2 = Dark2
  • Background2 = Light2

لا يوجد تحويل ديناميكي بين Text/Background وDark/Light. إنها مجرد أسماء بديلة لنفس ألوان السمة.

هذا الاختلاف في التسمية يأتي من مصطلحات Microsoft Office. الإصدارات القديمة من Office استخدمت Dark 1، Light 1، Dark 2، وLight 2، بينما إصدارات الواجهة الحديثة تعرض نفس الفتحات كـ Text 1، Background 1، Text 2، وBackground 2.

تغيير خط السمة

للسماح لك باختيار خطوط للسمات وأغراض أخرى، تستخدم Aspose.Slides هذه المعرفات الخاصة (مشابهة لتلك المستخدمة في PowerPoint):

  • +mn-lt - الخط الأساسي اللاتيني (خط لاتيني صغير)
  • +mj-lt - الخط الرئيسي اللاتيني (خط لاتيني كبير)
  • +mn-ea - الخط الأساسي الآسيوي الشرقي (خط آسيوي صغير)
  • +mj-ea - الخط الرئيسي الآسيوي الشرقي (خط آسيوي كبير)

هذا الكود Java يوضح لك كيفية تعيين الخط اللاتيني لعنصر في السمة:

IAutoShape shape = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 10, 10, 100, 100);

Paragraph paragraph = new Paragraph();

Portion portion = new Portion("Theme text format");

paragraph.getPortions().add(portion);

shape.getTextFrame().getParagraphs().add(paragraph);

portion.getPortionFormat().setLatinFont(new FontData("+mn-lt"));

هذا الكود Java يوضح لك كيفية تغيير خط موضوع العرض:

pres.getMasterTheme().getFontScheme().getMinor().setLatinFont(new FontData("Arial"));

سيتم تحديث الخط في جميع مربعات النص.

تغيير نمط خلفية السمة

بشكل افتراضي، يوفر تطبيق PowerPoint 12 خلفية مُعرّفة مسبقًا، لكن فقط 3 من تلك الخلفيات تُحفظ في عرض تقديمي نموذجي.

todo:image_alt_text

على سبيل المثال، بعد حفظ عرض تقديمي في تطبيق PowerPoint، يمكنك تشغيل هذا الكود Java لمعرفة عدد الخلفيات المُعرّفة مسبقًا في العرض:

Presentation pres = new Presentation("pres.pptx");
try {
    int numberOfBackgroundFills = pres.getMasterTheme().getFormatScheme().getBackgroundFillStyles().size();

    System.out.println("Number of background fill styles for theme is " + numberOfBackgroundFills);
} finally {
    if (pres != null) pres.dispose();
}

هذا الكود Java يوضح لك كيفية تعيين الخلفية لعرض تقديمي:

pres.getMasters().get_Item(0).getBackground().setStyleIndex(2);

دليل الفهرس: 0 يُستخدم لعدم التعبئة. يبدأ الفهرس من 1.

تغيير تأثير السمة

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

todo:image_alt_text

باستخدام 3 خصائص (FillStyles، LineStyles، EffectStyles) من فئة FormatScheme يمكنك تعديل العناصر في السمة (بمرونة أكبر من الخيارات المتوفرة في PowerPoint).

هذا الكود Java يوضح لك كيفية تغيير تأثير السمة عن طريق تعديل أجزاء من العناصر:

Presentation pres = new Presentation("Subtle_Moderate_Intense.pptx");
try {
    pres.getMasterTheme().getFormatScheme().getLineStyles().get_Item(0).getFillFormat().getSolidFillColor().setColor(Color.RED);

    pres.getMasterTheme().getFormatScheme().getFillStyles().get_Item(2).setFillType(FillType.Solid);

    pres.getMasterTheme().getFormatScheme().getFillStyles().get_Item(2).getSolidFillColor().setColor(Color.GREEN);

    pres.getMasterTheme().getFormatScheme().getEffectStyles().get_Item(2).getEffectFormat().getOuterShadowEffect().setDistance(10f);

    pres.save("Design_04_Subtle_Moderate_Intense-out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

التغييرات الناتجة في لون التعبئة، نوع التعبئة، تأثير الظل، إلخ:

todo:image_alt_text

الأسئلة المتداولة

هل يمكنني تطبيق سمة على شريحة واحدة دون تغيير القالب الرئيسي؟

نعم. تدعم Aspose.Slides تجاوزات سمة على مستوى الشريحة، لذا يمكنك تطبيق سمة محلية على تلك الشريحة فقط مع الحفاظ على سمة القالب الرئيسي دون تغيير (عبر SlideThemeManager).

ما هي الطريقة الأكثر أمانًا لنقل سمة من عرض تقديمي إلى آخر؟

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

كيف يمكنني رؤية القيم “الفعّالة” بعد جميع الوراثات والتجاوزات؟

استخدم “العروض الفعّالة” للـ API عبر "القيم الفعّالة" للسمة/اللون/الخط/التأثير. تُرجع هذه القيم الخصائص النهائية المحلّلة بعد تطبيق القالب بالإضافة إلى أي تجاوزات محلية.