تطبيق الرسوم المتحركة للأشكال في العروض التقديمية في .NET
الرسوم المتحركة هي تأثيرات بصرية يمكن تطبيقها على النصوص والصور والأشكال أو المخططات. إنها تضيف الحيوية إلى العروض التقديمية أو مكوناتها.
لماذا نستخدم الرسوم المتحركة في العروض التقديمية؟
باستخدام الرسوم المتحركة، يمكنك
- التحكم في تدفق المعلومات
- التأكيد على النقاط الهامة
- زيادة الاهتمام أو المشاركة بين جمهورك
- جعل المحتوى أسهل للقراءة أو الاستيعاب أو المعالجة
- جذب انتباه القراء أو المشاهدين إلى الأجزاء المهمة في العرض التقديمي
توفر PowerPoint العديد من الخيارات والأدوات للرسوم المتحركة وتأثيراتها عبر فئات الدخول، الخروج، التأكيد، ومسارات الحركة.
الرسوم المتحركة في Aspose.Slides
- Aspose.Slides توفر الفئات والأنواع التي تحتاجها للعمل مع الرسوم المتحركة ضمن مساحة الأسماء Aspose.Slides.Animation.
- Aspose.Slides توفر أكثر من 150 تأثير رسوم متحركة ضمن تعداد EffectType. هذه التأثيرات هي في الأساس نفس التأثيرات (أو ما يعادلها) المستخدمة في PowerPoint.
تطبيق الرسوم المتحركة على مربع نص
تتيح Aspose.Slides لـ .NET إمكانية تطبيق الرسوم المتحركة على النص داخل الشكل.
- إنشاء مثيل من الفئة Presentation.
- الحصول على مرجع الشريحة من خلال فهرستها.
- إضافة
مستطيلمن النوع IAutoShape. - إضافة نص إلى IAutoShape.TextFrame.
- الحصول على تسلسل رئيسي من التأثيرات.
- إضافة تأثير رسوم متحركة إلى IAutoShape.
- ضبط خاصية TextAnimation.BuildType إلى القيمة من تعداد BuildType Enumeration.
- كتابة العرض التقديمي إلى القرص كملف PPTX.
هذا الكود C# يوضح كيفية تطبيق تأثير Fade على AutoShape وضبط الرسوم المتحركة للنص إلى القيمة By 1st Level Paragraphs:
// ينشئ كائن عرض تقديمي يمثل ملف عرض تقديمي.
using (Presentation pres = new Presentation())
{
ISlide sld = pres.Slides[0];
// يضيف AutoShape جديد مع نص
IAutoShape autoShape = sld.Shapes.AddAutoShape(ShapeType.Rectangle, 20, 20, 150, 100);
ITextFrame textFrame = autoShape.TextFrame;
textFrame.Text = "First paragraph \nSecond paragraph \n Third paragraph";
// يحصل على التسلسل الرئيسي للشرائح.
ISequence sequence = sld.Timeline.MainSequence;
// يضيف تأثير Fade للرسوم المتحركة إلى الشكل
IEffect effect = sequence.AddEffect(autoShape, EffectType.Fade, EffectSubtype.None, EffectTriggerType.OnClick);
// يحرك نص الشكل باستخدام فقرات المستوى الأول
effect.TextAnimation.BuildType = BuildType.ByLevelParagraphs1;
// حفظ ملف PPTX إلى القرص
pres.Save(path + "AnimTextBox_out.pptx", SaveFormat.Pptx);
}
تطبيق الرسوم المتحركة على إطار صورة
- إنشاء مثيل من الفئة Presentation.
- الحصول على مرجع الشريحة من خلال فهرستها.
- إضافة أو الحصول على PictureFrame على الشريحة.
- الحصول على التسلسل الرئيسي للتأثيرات.
- إضافة تأثير رسوم متحركة إلى PictureFrame.
- كتابة العرض التقديمي إلى القرص كملف PPTX.
هذا الكود C# يوضح كيفية تطبيق تأثير Fly على إطار صورة:
// إنشاء كائن عرض تقديمي يمثل ملف عرض تقديمي.
using (Presentation pres = new Presentation())
{
// تحميل صورة لإضافتها إلى مجموعة صور العرض التقديمي
IImage image = Images.FromFile("aspose-logo.jpg");
IPPImage ppImage = pres.Images.AddImage(image);
image.Dispose();
// إضافة إطار صورة إلى الشريحة
IPictureFrame picFrame = pres.Slides[0].Shapes.AddPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, ppImage);
// الحصول على التسلسل الرئيسي للشريحة.
ISequence sequence = pres.Slides[0].Timeline.MainSequence;
// إضافة تأثير التحليق من اليسار إلى إطار الصورة
IEffect effect = sequence.AddEffect(picFrame, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick);
// حفظ ملف PPTX إلى القرص
pres.Save("AnimImage_out.pptx", SaveFormat.Pptx);
}
تطبيق الرسوم المتحركة على شكل
- إنشاء مثيل من الفئة Presentation.
- الحصول على مرجع الشريحة من خلال فهرستها.
- إضافة
مستطيلمن النوع IAutoShape. - إضافة
BevelIAutoShape (عند النقر على هذا الكائن يتم تشغيل الرسوم المتحركة). - إنشاء تسلسل من التأثيرات على الشكل Bevel.
- إنشاء
UserPathمخصص. - إضافة أوامر للتحرك إلى
UserPath. - كتابة العرض التقديمي إلى القرص كملف PPTX.
هذا الكود C# يوضح كيفية تطبيق تأثير PathFootball (مسار كرة القدم) على شكل:
// ينشئ كائن Presentation يمثل ملف عرض تقديمي.
using (Presentation pres = new Presentation())
{
ISlide sld = pres.Slides[0];
// ينشئ تأثير PathFootball للشكل الحالي من البداية.
IAutoShape ashp = sld.Shapes.AddAutoShape(ShapeType.Rectangle, 150, 150, 250, 25);
ashp.AddTextFrame("Animated TextBox");
// يضيف تأثير التحريك PathFootBall.
pres.Slides[0].Timeline.MainSequence.AddEffect(ashp, EffectType.PathFootball,
EffectSubtype.None, EffectTriggerType.AfterPrevious);
// ينشئ نوعًا ما من "زر".
IShape shapeTrigger = pres.Slides[0].Shapes.AddAutoShape(ShapeType.Bevel, 10, 10, 20, 20);
// ينشئ تسلسلًا من التأثيرات للزر.
ISequence seqInter = pres.Slides[0].Timeline.InteractiveSequences.Add(shapeTrigger);
// ينشئ مسارًا مخصصًا للمستخدم. سيتحرك كائننا فقط بعد النقر على الزر.
IEffect fxUserPath = seqInter.AddEffect(ashp, EffectType.PathUser, EffectSubtype.None, EffectTriggerType.OnClick);
// يضيف أوامر الحركة لأن المسار المخلق فارغ.
IMotionEffect motionBvh = ((IMotionEffect)fxUserPath.Behaviors[0]);
PointF[] pts = new PointF[1];
pts[0] = new PointF(0.076f, 0.59f);
motionBvh.Path.Add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, true);
pts[0] = new PointF(-0.076f, -0.59f);
motionBvh.Path.Add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, false);
motionBvh.Path.Add(MotionCommandPathType.End, null, MotionPathPointsType.Auto, false);
// يكتب ملف PPTX إلى القرص
pres.Save("AnimExample_out.pptx", SaveFormat.Pptx);
}
الحصول على تأثيرات الرسوم المتحركة المطبقة على شكل
توضح الأمثلة التالية كيفية استخدام طريقة GetEffectsByShape من واجهة ISequence للحصول على جميع تأثيرات الرسوم المتحركة المطبقة على شكل.
مثال 1: الحصول على تأثيرات الرسوم المتحركة المطبقة على شكل في شريحة عادية
في السابق، تعلمت كيفية إضافة تأثيرات الرسوم المتحركة إلى الأشكال في عروض PowerPoint. يوضح الكود العيني التالي كيفية الحصول على التأثيرات المطبقة على الشكل الأول في الشريحة العادية الأولى في العرض التقديمي AnimExample_out.pptx.
using (Presentation presentation = new Presentation("AnimExample_out.pptx"))
{
ISlide firstSlide = presentation.Slides[0];
// يحصل على تسلسل الرسوم المتحركة الرئيسي للشريحة.
ISequence sequence = firstSlide.Timeline.MainSequence;
// يحصل على الشكل الأول في الشريحة الأولى.
IShape shape = firstSlide.Shapes[0];
// يحصل على تأثيرات الرسوم المتحركة المطبقة على الشكل.
IEffect[] shapeEffects = sequence.GetEffectsByShape(shape);
if (shapeEffects.Length > 0)
Console.WriteLine($"The shape {shape.Name} has {shapeEffects.Length} animation effects.");
}
مثال 2: الحصول على جميع تأثيرات الرسوم المتحركة، بما في ذلك تلك الموروثة من العناصر النائبة
إذا كان هناك شكل في شريحة عادية يحتوي على عناصر نائبة موجودة في شريحة التخطيط و/أو الشريحة الرئيسة، وتم إضافة تأثيرات رسوم متحركة إلى هذه العناصر النائبة، فسيتم تشغيل جميع تأثيرات الشكل أثناء عرض الشرائح، بما في ذلك تلك الموروثة من العناصر النائبة.
لنفترض أن لدينا ملف عرض PowerPoint sample.pptx يحتوي على شريحة واحدة تضم فقط شكل تذييل بالنص “Made with Aspose.Slides” وتم تطبيق تأثير Random Bars على الشكل.

لنفترض أيضًا أن تأثير Split تم تطبيقه على عنصر نائب التذييل في شريحة التخطيط.

وأخيرًا، أن تأثير Fly In تم تطبيقه على عنصر نائب التذييل في شريحة الرئيس.

يظهر الكود العيني التالي كيفية استخدام طريقة GetBasePlaceholder من واجهة IShape للوصول إلى العناصر النائبة للأشكال والحصول على تأثيرات الرسوم المتحركة المطبقة على شكل التذييل، بما في ذلك تلك الموروثة من العناصر النائبة الموجودة في شرائح التخطيط والرئيس.
using (Presentation presentation = new Presentation("sample.pptx"))
{
ISlide slide = presentation.Slides[0];
// الحصول على تأثيرات الرسوم المتحركة للشكل على الشريحة العادية.
IShape shape = slide.Shapes[0];
IEffect[] shapeEffects = slide.Timeline.MainSequence.GetEffectsByShape(shape);
// الحصول على تأثيرات الرسوم المتحركة للعنصر النائب على شريحة التخطيط.
IShape layoutShape = shape.GetBasePlaceholder();
IEffect[] layoutShapeEffects = slide.LayoutSlide.Timeline.MainSequence.GetEffectsByShape(layoutShape);
// الحصول على تأثيرات الرسوم المتحركة للعنصر النائب على شريحة الرئيس.
IShape masterShape = layoutShape.GetBasePlaceholder();
IEffect[] masterShapeEffects = slide.LayoutSlide.MasterSlide.Timeline.MainSequence.GetEffectsByShape(masterShape);
Console.WriteLine("Main sequence of shape effects:");
PrintEffects(masterShapeEffects);
PrintEffects(layoutShapeEffects);
PrintEffects(shapeEffects);
}
static void PrintEffects(IEnumerable<IEffect> effects)
{
foreach (IEffect effect in effects)
{
Console.WriteLine($"{effect.Type} {effect.Subtype}");
}
}
Output:
التسلسل الرئيسي لتأثيرات الشكل:
تحليق أسفل
تقسيم عمودي داخل
أشرطة عشوائية أفقية
تغيير خصائص توقيت تأثير الرسوم المتحركة
تتيح Aspose.Slides لـ .NET إمكانية تغيير خصائص التوقيت لتأثير الرسوم المتحركة.
هذه هي لوحة توقيت الرسوم المتحركة والقائمة الموسعة في Microsoft PowerPoint:

- قائمة Start المنسدلة في توقيت PowerPoint تتطابق مع خاصية Effect.Timing.TriggerType.
- توقيت PowerPoint Duration يتطابق مع خاصية Effect.Timing.Duration. مدة الرسوم المتحركة (بالثواني) هي الوقت الإجمالي الذي تستغرقه لإكمال دورة واحدة.
- توقيت PowerPoint Delay يتطابق مع خاصية Effect.Timing.TriggerDelayTime.
- قائمة Repeat المنسدلة في توقيت PowerPoint تتطابق مع هذه الخصائص:
- خاصية Effect.Timing.RepeatCount التي تصف عدد مرات تكرار التأثير؛
- علم Effect.Timing.RepeatUntilEndSlide الذي يحدد ما إذا كان التأثير يتكرر حتى نهاية الشريحة؛
- علم Effect.Timing.RepeatUntilNextClick الذي يحدد ما إذا كان التأثير يتكرر حتى النقر التالي.
- مربع الاختيار Rewind when done playing في توقيت PowerPoint يتطابق مع خاصية Effect.Timing.Rewind.
هذه هي الطريقة لتغيير خصائص توقيت التأثير:
- Apply أو الحصول على تأثير الرسوم المتحركة.
- تعيين قيم جديدة لخصائص Effect.Timing التي تحتاجها.
- حفظ ملف PPTX المعدل.
هذا الكود C# يوضح العملية:
// إنشاء كائن من فئة Presentation يمثل ملف عرض تقديمي.
using (Presentation pres = new Presentation("AnimExample_out.pptx"))
{
// يحصل على التسلسل الرئيسي للشريحة.
ISequence sequence = pres.Slides[0].Timeline.MainSequence;
// يحصل على التأثير الأول في التسلسل الرئيسي.
IEffect effect = sequence[0];
// يغيّر TriggerType الخاص بالتأثير لتبدأ عند النقر
effect.Timing.TriggerType = EffectTriggerType.OnClick;
// يغيّر Duration الخاص بالتأثير
effect.Timing.Duration = 3f;
// يغيّر TriggerDelayTime الخاص بالتأثير
effect.Timing.TriggerDelayTime = 0.5f;
// إذا كانت قيمة Repeat للتأثير هي "none"
if (effect.Timing.RepeatCount == 1f)
{
// يغيّر Repeat الخاص بالتأثير إلى "Until Next Click"
effect.Timing.RepeatUntilNextClick = true;
}
else
{
// يغيّر Repeat الخاص بالتأثير إلى "Until End of Slide"
effect.Timing.RepeatUntilEndSlide = true;
}
// يفعل Rewind الخاص بالتأثير
effect.Timing.Rewind = true;
// يحفظ ملف PPTX إلى القرص
pres.Save("AnimExample_changed.pptx", SaveFormat.Pptx);
}
صوت تأثير الرسوم المتحركة
توفر Aspose.Slides هذه الخصائص لتسمح لك بالعمل مع الأصوات في تأثيرات الرسوم المتحركة:
- خاصية IEffect.Sound
- خاصية IEffect.StopPreviousSound
إضافة صوت لتأثير الرسوم المتحركة
هذا الكود C# يوضح كيفية إضافة صوت لتأثير الرسوم المتحركة وإيقافه عندما يبدأ التأثير التالي:
using (Presentation pres = new Presentation("AnimExample_out.pptx"))
{
// يضيف صوتًا إلى مجموعة أصوات العرض التقديمي
IAudio effectSound = pres.Audios.AddAudio(File.ReadAllBytes("sampleaudio.wav"));
ISlide firstSlide = pres.Slides[0];
// يحصل على التسلسل الرئيسي للشريحة.
ISequence sequence = firstSlide.Timeline.MainSequence;
// يحصل على التأثير الأول في التسلسل الرئيسي
IEffect firstEffect = sequence[0];
// يتحقق من التأثير لعدم وجود صوت
if (!firstEffect.StopPreviousSound && firstEffect.Sound == null)
{
// يضيف صوتًا للتأثير الأول
firstEffect.Sound = effectSound;
}
// يحصل على التسلسل التفاعلي الأول للشريحة.
ISequence interactiveSequence = firstSlide.Timeline.InteractiveSequences[0];
// يضبط علامة "إيقاف الصوت السابق" للتأثير
interactiveSequence[0].StopPreviousSound = true;
// يكتب ملف PPTX إلى القرص
pres.Save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
}
استخراج صوت لتأثير الرسوم المتحركة
- إنشاء مثيل من الفئة Presentation.
- الحصول على مرجع الشريحة من خلال فهرستها.
- الحصول على التسلسل الرئيس للتأثيرات.
- استخراج Sound المضمن لكل تأثير رسوم متحركة.
هذا الكود C# يوضح كيفية استخراج الصوت المضمن في تأثير الرسوم المتحركة:
// ينشئ كائن عرض تقديمي يمثل ملف عرض تقديمي.
using (Presentation presentation = new Presentation("EffectSound.pptx"))
{
ISlide slide = presentation.Slides[0];
// يحصل على التسلسل الرئيسي للشريحة.
ISequence sequence = slide.Timeline.MainSequence;
foreach (IEffect effect in sequence)
{
if (effect.Sound == null)
continue;
// يستخرج صوت التأثير في مصفوفة بايت
byte[] audio = effect.Sound.BinaryData;
}
}
بعد الرسوم المتحركة
تتيح Aspose.Slides لـ .NET إمكانية تغيير خاصية After animation لتأثير الرسوم المتحركة.
هذه هي لوحة تأثير الرسوم المتحركة والقائمة الموسعة في Microsoft PowerPoint:

قائمة After animation المنسدلة في PowerPoint تتطابق مع هذه الخصائص:
- خاصية IEffect.AfterAnimationType التي تصف نوع After animation :
- PowerPoint More Colors يتطابق مع النوع AfterAnimationType.Color .
- PowerPoint Don’t Dim يتطابق مع النوع AfterAnimationType.DoNotDim (نوع After animation الافتراضي) ;
- PowerPoint Hide After Animation يتطابق مع النوع AfterAnimationType.HideAfterAnimation ;
- PowerPoint Hide on Next Mouse Click يتطابق مع النوع AfterAnimationType.HideOnNextMouseClick ;
- خاصية IEffect.AfterAnimationColor التي تحدد تنسيق لون After animation. تعمل هذه الخاصية بالتنسيق مع النوع AfterAnimationType.Color. إذا قمت بتغيير النوع إلى آخر، سيتم مسح لون After animation.
هذا الكود C# يوضح كيفية تغيير تأثير After animation:
// ينشئ كائن فئة Presentation يمثل ملف عرض تقديمي
using (Presentation pres = new Presentation("AnimImage_out.pptx"))
{
ISlide firstSlide = pres.Slides[0];
// يحصل على التأثير الأول في التسلسل الرئيسي
IEffect firstEffect = firstSlide.Timeline.MainSequence[0];
// يغيّر نوع الحركة اللاحقة إلى Color
firstEffect.AfterAnimationType = AfterAnimationType.Color;
// يعيّن لون إضاءة الحركة اللاحقة
firstEffect.AfterAnimationColor.Color = Color.AliceBlue;
// يحفظ ملف PPTX إلى القرص
pres.Save("AnimImage_AfterAnimation.pptx", SaveFormat.Pptx);
}
تحريك النص
توفر Aspose.Slides هذه الخصائص لتسمح لك بالعمل مع كتلة Animate text في تأثير الرسوم المتحركة:
- خاصية IEffect.AnimateTextType التي تصف نوع تحريك النص في التأثير. يمكن تحريك نص الشكل:
- الكل مرة واحدة (AnimateTextType.AllAtOnce النوع)
- كلمة بكلمة (AnimateTextType.ByWord النوع)
- حرف بحرف (AnimateTextType.ByLetter النوع)
- خاصية IEffect.DelayBetweenTextParts تحدد تأخيرًا بين أجزاء النص المتحركة (كلمات أو أحرف). القيمة الموجبة تحدد نسبة مدة التأثير. القيمة السالبة تحدد التأخير بالثواني.
هذه هي الطريقة لتغيير خصائص Effect Animate text:
- Apply أو الحصول على تأثير الرسوم المتحركة.
- تعيين خاصية IEffect.TextAnimation.BuildType إلى القيمة BuildType.AsOneObject لإلغاء وضعية التحريك By Paragraphs.
- تعيين قيم جديدة لخصائص IEffect.AnimateTextType وIEffect.DelayBetweenTextParts.
- حفظ ملف PPTX المعدل.
هذا الكود C# يوضح العملية:
// ينشئ كائن عرض تقديمي يمثل ملف عرض تقديمي.
using (Presentation pres = new Presentation("AnimTextBox_out.pptx"))
{
ISlide firstSlide = pres.Slides[0];
// يحصل على التأثير الأول في التسلسل الرئيسي
IEffect firstEffect = firstSlide.Timeline.MainSequence[0];
// يغيّر نوع تحريك النص في التأثير إلى "كائن واحد"
firstEffect.TextAnimation.BuildType = BuildType.AsOneObject;
// يغيّر نوع تحريك النص في التأثير إلى "كلمة بكلمة"
firstEffect.AnimateTextType = AnimateTextType.ByWord;
// يحدد التأخير بين الكلمات إلى 20٪ من مدة التأثير
firstEffect.DelayBetweenTextParts = 20f;
// يحفظ ملف PPTX إلى القرص
pres.Save("AnimTextBox_AnimateText.pptx", SaveFormat.Pptx);
}
الأسئلة المتكررة
كيف يمكنني التأكد من حفظ الرسوم المتحركة عند نشر العرض التقديمي على الويب؟
Export to HTML5 وتفعيل الـ options المسؤولة عن رسوم المتحركة للـ shape وtransition. HTML العادي لا يشغل رسوم المتحركة للشرائح، بينما HTML5 يفعل ذلك.
كيف يؤثر تغيير ترتيب z-order (ترتيب الطبقة) للأشكال على الرسوم المتحركة؟
الرسوم المتحركة وترتيب الرسم مستقلان: يتحكم التأثير في توقيت ونوع الظهور/الاختفاء، بينما يحدد z-order ما يغطي ما. النتيجة المرئية تُحدد بتكوينهما معًا. (هذا هو سلوك PowerPoint العام؛ نموذج Aspose.Slides للتأثيرات والأشكال يتبع نفس المنطق.)
هل هناك قيود عند تحويل الرسوم المتحركة إلى فيديو لبعض التأثيرات؟
عمومًا، الدعم للرسوم المتحركة موجود، لكن قد تُعرض بعض الحالات النادرة أو التأثيرات المحددة بشكل مختلف. يُنصح باختبار التأثيرات التي تستخدمها ومع نسخة المكتبة.