إدارة انتقالات الشرائح في العروض التقديمية في .NET

نظرة عامة

تتحكم انتقالات الشرائح في طريقة ظهور الشرائح أثناء عرض الشرائح. باستخدام Aspose.Slides for .NET، يمكنك اختيار تأثير انتقال لكل شريحة، تكوين التقدم عبر النقر بالفأرة أو المؤقت، وضبط الخيارات الخاصة بتأثير معين. تستخدم هذه المقالة أمثلة C# لتطبيق الانتقالات، تحديد مدة الانتقال بدقة، إدارة توقيت الشرائح، وإنشاء انتقال Morph بين شريحتين. كما تظهر الأمثلة كيفية حفظ الإعدادات إلى ملف PPTX.

إضافة انتقال للشرائح

لتطبيق انتقال، قم بتحميل عرض تقديمي باستخدام الفئة Presentation والوصول إلى خاصية SlideShowTransition للشرائح. عيّن Type إلى قيمة من تعداد TransitionType، ثم احفظ العرض التقديمي.

المثال التالي يطبق انتقال Circle على الشريحة الأولى وانتقال Comb على الشريحة الثانية. استخدم ملف input.pptx يحتوي على شريحتين على الأقل.

using System;
using Aspose.Slides;
using Aspose.Slides.Export;
using Aspose.Slides.SlideShow;

using var presentation = new Presentation("input.pptx");

if (presentation.Slides.Count >= 2)
{
    presentation.Slides[0].SlideShowTransition.Type = TransitionType.Circle;
    presentation.Slides[1].SlideShowTransition.Type = TransitionType.Comb;

    presentation.Save("slide-transitions.pptx", SaveFormat.Pptx);
}
else
{
    Console.WriteLine("The input presentation must contain at least two slides.");
}

إضافة انتقال متقدم للشرائح

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

  • AdvanceOnClick يتيح للمشاهد التقدم بالنقر على الفأرة.
  • AdvanceAfter يتيح التقدم التلقائي.
  • AdvanceAfterTime يحدّد التأخير قبل التقدم التلقائي، بالميلي ثانية.

فعّل كل من التقدم بالنقر والتقدم المؤقت للسماح للمشاهد بالمتابعة بالنقر أو الانتظار للمؤقت. لاستخدام المؤقت فقط، عيّن AdvanceOnClick إلى false. يتحكم التأخير في توقيت تقدم عرض الشرائح؛ ولا يحدّد مدة تأثير الانتقال البصري.

هذا المثال يعيّن تأثيرات مختلفة للشرائح الثلاث الأولى ويفعل التقدم التلقائي بعد 3، 5، و7 ثوانٍ على التوالي. يمكن للنقرات بالفأرة أيضًا التقدم بهذه الشرائح. استخدم ملف input.pptx يحتوي على ثلاث شرائح على الأقل.

using System;
using Aspose.Slides;
using Aspose.Slides.Export;
using Aspose.Slides.SlideShow;

using var presentation = new Presentation("input.pptx");

if (presentation.Slides.Count >= 3)
{
    var firstTransition = presentation.Slides[0].SlideShowTransition;
    firstTransition.Type = TransitionType.Circle;
    firstTransition.AdvanceOnClick = true;
    firstTransition.AdvanceAfter = true;
    firstTransition.AdvanceAfterTime = 3000;

    var secondTransition = presentation.Slides[1].SlideShowTransition;
    secondTransition.Type = TransitionType.Comb;
    secondTransition.AdvanceOnClick = true;
    secondTransition.AdvanceAfter = true;
    secondTransition.AdvanceAfterTime = 5000;

    var thirdTransition = presentation.Slides[2].SlideShowTransition;
    thirdTransition.Type = TransitionType.Zoom;
    thirdTransition.AdvanceOnClick = true;
    thirdTransition.AdvanceAfter = true;
    thirdTransition.AdvanceAfterTime = 7000;

    presentation.Save("advanced-transitions.pptx", SaveFormat.Pptx);
}
else
{
    Console.WriteLine("The input presentation must contain at least three slides.");
}

للتحقق مما إذا كان التقدم المؤقت مفعَّلًا، اقرأ AdvanceAfter. مجرد وجود تأخير مخزن لا يدل على أن المؤقت نشط.

المثال التالي يفتح الملف المحفوظ أعلاه، يبلغ عن كل مؤقت مفعَّل، ويعطّل التقدم التلقائي للشرائح التي لديها تأخير أكبر من ثانيتين. يُفعّل النقر بالفأرة لهذه الشرائح ويحفظ الإعدادات المحدثة.

using System;
using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("advanced-transitions.pptx");

foreach (var slide in presentation.Slides)
{
    var transition = slide.SlideShowTransition;

    if (transition.AdvanceAfter)
    {
        Console.WriteLine($"Slide {slide.SlideNumber}: advance after {transition.AdvanceAfterTime} ms.");

        if (transition.AdvanceAfterTime > 2000)
        {
            transition.AdvanceAfter = false;
            transition.AdvanceOnClick = true;
        }
    }
}

presentation.Save("adjusted-transitions.pptx", SaveFormat.Pptx);

التحكم بدقة في توقيت الانتقال

استخدم Duration لتحديد الطول الدقيق لتأثير الانتقال بالميلي ثانية. خاصية SlideShowTransition للشرائح تكشف عن هذه الإعدادات عبر ISlideShowTransition:

Property Purpose
Duration يحدد مدة تأثير الانتقال نفسه، بالميلي ثانية.
AdvanceAfterTime يحدد التأخير قبل أن تتقدم الشريحة تلقائيًا، بالميلي ثانية. فعّل AdvanceAfter لتفعيل هذا المؤقت.
Speed يختار فئة سرعة مسبقة من TransitionSpeed: Slow، Medium، أو Fast. يستخدم عندما لا يتم تحديد مدة دقيقة.

Duration يتحكم فقط في تأثير الانتقال؛ ولا يحدّد مدة بقاء الشريحة مرئية. قم بتكوين تأخير التقدم التلقائي بشكل منفصل. عندما لا تُحدد مدة صريحة، يحدد Aspose.Slides مدة التأثير بناءً على نوع الانتقال وقيمة Speed.

تطبيق نفس المدة على كل شريحة

لتنظيم الإيقاع بشكل ثابت، طبّق نفس التأثير والمدة الدقيقة على كل شريحة. هذا المثال يحمّل input.pptx، يختار Fade من TransitionType، ويعطي كل انتقال مدة 750 ميلي ثانية. كما يفعّل التقدم التلقائي بعد 5,000 ميلي ثانية ويعطّل التقدم بالنقر، ثم يحفظ النتيجة كملف PPTX.

using Aspose.Slides;
using Aspose.Slides.Export;
using Aspose.Slides.SlideShow;

using var presentation = new Presentation("input.pptx");

foreach (var slide in presentation.Slides)
{
    var transition = slide.SlideShowTransition;
    transition.Type = TransitionType.Fade;
    transition.Duration = 750;

    // تكوين التقدم التلقائي بشكل مستقل عن مدة التأثير.
    transition.AdvanceAfter = true;
    transition.AdvanceAfterTime = 5000;
    transition.AdvanceOnClick = false;
}

presentation.Save("precise-transitions.pptx", SaveFormat.Pptx);

تعيين مدد مختلفة للشرائح الفردية

يمكن للشرائح المختلفة استخدام مدد تأثير مختلفة. على سبيل المثال، استخدم انتقالًا قصيرًا لشريحة العنوان وانتقالًا أطول لمقدمة القسم. هذا المثال يحدد 500 ميلي ثانية للشرحة الأولى و1,200 ميلي ثانية للشرحة الثانية. استخدم ملف input.pptx يحتوي على شريحتين على الأقل.

using System;
using Aspose.Slides;
using Aspose.Slides.Export;
using Aspose.Slides.SlideShow;

using var presentation = new Presentation("input.pptx");

if (presentation.Slides.Count >= 2)
{
    var firstTransition = presentation.Slides[0].SlideShowTransition;
    firstTransition.Type = TransitionType.Fade;
    firstTransition.Duration = 500;

    var secondTransition = presentation.Slides[1].SlideShowTransition;
    secondTransition.Type = TransitionType.Push;
    secondTransition.Duration = 1200;

    presentation.Save("individual-transition-durations.pptx", SaveFormat.Pptx);
}
else
{
    Console.WriteLine("The input presentation must contain at least two slides.");
}

تنسيق الانتقالات مع الإخراج المتحرك

عند إعداد GIF متحرك، عرض HTML5، أو الفيديو، حدد مدد الانتقال الدقيقة قبل التصدير لتتناسب مع الإيقاع المطلوب. على سبيل المثال، استخدم تلاشيًا بمدة 600 ميلي ثانية بين المشاهد، واضبط تأخير تقدم كل شريحة بشكل منفصل لتوفير وقت للسرد أو المحتوى.

للـ GIF والفيديو، نسّق معدل الإطار مع مدة التأثير: 600 ميلي ثانية تعادل 18 إطارًا عند 30 إطارًا في الثانية. في HTML5، فعّل الانتقالات المتحركة في إعدادات التصدير. تحقق من تأثيرات وإعدادات التوقيت المدعومة في تنسيق التصدير المختار، وقم بمعاينة النتيجة لتأكيد التزامن.

قراءة مدة الانتقال الحالية

اقرأ Duration قبل تعديل الانتقال لتحديد ما إذا كان هناك قيمة صريحة مخزنة. القيمة -1 تعني عدم تحديد مدة صريحة؛ والقيمة غير السالبة تحدد المدة المخزنة بالميلي ثانية. القيمة غير المضبوطة ليست مدة التشغيل المحتسبة: يستخدم Aspose.Slides نوع الانتقال وSpeed لتحديد تلك المدة. تعيين نوع الانتقال قد يهيئ مدةً، لذا تحقق من الإعدادات الأصلية أولاً.

using System;
using Aspose.Slides;

using var presentation = new Presentation("input.pptx");

foreach (var slide in presentation.Slides)
{
    var transition = slide.SlideShowTransition;
    var duration = transition.Duration;

    if (duration >= 0)
    {
        Console.WriteLine($"Slide {slide.SlideNumber}: stored transition duration is {duration} ms.");
    }
    else
    {
        Console.WriteLine($"Slide {slide.SlideNumber}: no explicit duration; timing depends on {transition.Type} and {transition.Speed}.");
    }
}

انتقال Morph

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

using Aspose.Slides;
using Aspose.Slides.Export;
using Aspose.Slides.SlideShow;

using var presentation = new Presentation();

var firstSlide = presentation.Slides[0];
var rectangle = firstSlide.Shapes.AddAutoShape(ShapeType.Rectangle, 100, 100, 400, 100);
rectangle.TextFrame.Text = "Morph transition";

var secondSlide = presentation.Slides.AddClone(firstSlide);
var movedRectangle = secondSlide.Shapes[0];
movedRectangle.X += 100;
movedRectangle.Y += 50;
movedRectangle.Width -= 200;
movedRectangle.Height -= 10;

secondSlide.SlideShowTransition.Type = TransitionType.Morph;

presentation.Save("morph-transition.pptx", SaveFormat.Pptx);

أنواع انتقال Morph

تتحكم تعداد TransitionMorphType في طريقة مطابقة وتحريك المحتوى بواسطة Morph:

  • ByObject يعامل كل شكل ككائن كامل.
  • ByWord يحرك النص بمطابقة الكلمات حيثما أمكن.
  • ByChar يحرك النص بمطابقة الأحرف حيثما أمكن.

عيّن Type للانتقال إلى Morph قبل الوصول إلى Value. ثم توفر القيمة واجهة IMorphTransition، التي يختار خاصية MorphType وضع المطابقة.

using System;
using Aspose.Slides;
using Aspose.Slides.Export;
using Aspose.Slides.SlideShow;

using var presentation = new Presentation("morph-transition.pptx");

if (presentation.Slides.Count >= 2)
{
    var transition = presentation.Slides[1].SlideShowTransition;
    transition.Type = TransitionType.Morph;

    if (transition.Value is IMorphTransition morphTransition)
    {
        morphTransition.MorphType = TransitionMorphType.ByWord;
        presentation.Save("morph-by-word.pptx", SaveFormat.Pptx);
    }
    else
    {
        Console.WriteLine("Morph transition options are unavailable.");
    }
}
else
{
    Console.WriteLine("The input presentation must contain at least two slides.");
}

تعيين تأثيرات الانتقال

بعض الانتقالات تكشف عن خيارات إضافية، مثل الاتجاه أو ما إذا كان التأثير يبدأ من شاشة سوداء. الخيارات المتاحة تعتمد على Type الانتقال المختار. عيّن النوع أولاً، ثم استخدم الواجهة المناسبة من Value.

المثال التالي يطبق انتقال Cut على الشريحة الأولى من input.pptx. يضبط FromBlack عبر IOptionalBlackTransition لجعل الانتقال يبدأ من شاشة سوداء.

using System;
using Aspose.Slides;
using Aspose.Slides.Export;
using Aspose.Slides.SlideShow;

using var presentation = new Presentation("input.pptx");
var transition = presentation.Slides[0].SlideShowTransition;
transition.Type = TransitionType.Cut;

if (transition.Value is IOptionalBlackTransition cutTransition)
{
    cutTransition.FromBlack = true;
    presentation.Save("cut-from-black.pptx", SaveFormat.Pptx);
}
else
{
    Console.WriteLine("Cut transition options are unavailable.");
}

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

هل يمكنني التحكم في سرعة تشغيل انتقال الشريحة؟

نعم. يفضَّل استخدام Duration عندما تحتاج إلى مدة تأثير دقيقة بالميلي ثانية. استخدم Speed عندما تكون فئة TransitionSpeed مسبقة—Slow، Medium، أو Fast—كافية ولا يتم تعيين مدة صريحة. تتحكم هذه الإعدادات في تأثير الانتقال بشكل مستقل عن تأخير التقدم التلقائي.

هل يمكنني إرفاق صوت بالانتقال وجعله يتكرر؟

نعم. عيّن الصوت المدمج إلى Sound، اضبط SoundMode إلى StartSound من تعداد TransitionSoundMode، وفعل SoundLoop. سيستمر الصوت في التكرار حتى حدث صوتي التالي في عرض الشرائح.

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

مرِّر عبر مجموعة Slides في العرض التقديمي وعين خاصية Type للانتقال في كل شريحة إلى نفس القيمة. اضبط أي خيارات توقيت وتأثير في نفس الحلقة للحفاظ على سلوك موحد عبر الشرائح.

كيف يمكنني التحقق من الانتقال الحالي المعيّن على شريحة ما؟

اقرأ خاصية Type من SlideShowTransition للشفرة. تُعيد قيمة من تعداد TransitionType؛ القيمة None تعني عدم تطبيق أي تأثير انتقال.