تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مقال- الصور المتحركة في الدوت نت Animation
#4
هل من الممكن أن نرسم الصور المتحركة؟

هل من الممكن رسم الصور المتحركة بأبعادها الأصلية أو بأبعاد جديدة داخل الفورم أو داخل الكونترول هذا النوع من الأسئلة قد يخطر بعقل القارئ

طبعا و أكيد من الممكن أن نعيد رسم الصورة المتحركة بل و نعدل في أبعادها بدون أن تفقد شيئا من خواصها
وهذا يتم عن طريق استخدام احد الكلاس الهامة وهو ImageAnimator Class و هذا الكلاس لا يمكن استخدام الوراثة Inheritance معه لأنه Not Inheritable Class ومن أهم عناصر هذا الكلاس التي يهمنا أن نركز عليها هي الطرق Methods التالية حيث يتم استخدامها في التعامل مع ملفات الصور المتحركة

1- Animate وهي عبارة عن Public Shared Sub
2- CanAnimate وهي عبارة عن Public Shared Function
3- ٍStopAnimate وهي عبارة عن Public Shared Sub
4- UpdateFrames وهي عبارة عن Public Shared Sub

ولمن يريد مزيدا من التفاصيل عن هذا الكلاس يمكنه أن يقرأ ملف Help الموجود في الفيجوال استوديو

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

المثال الخامس:

أولا: نفتح مشروعا جديدا ولنطلق عليه AnimatedImage مثلا

ثانيا: نضيف الي المشروع وتحديدا في Resources صورة لها امتداد GIF

ثالثا: نضيف الي المشروع متغير يرمز لهذه الصورة

رابعا: في حدث الفورم Load نقوم بتحديد قيمة Form1.DoubleBuffered ونجعلها True حيث أننا نرسم داخل الفورم مباشرو وكما أوضحنا سابقا في أول المقال الهدف من ذلك هو تجنب حدوث Flickering أثناء رسم الصورة
وداخل نفس الحدث نقوم باستخدام جملة If…..Then…..End If ونستخدمها لنحدد هل الصورة المستخدمة صورة متحركة أم لا فإذا كانت الصورة متحركة نقوم [تنفيذ الكود وإن لم تكن متحركة ممكن نضع أي شرط أخر مثل رسالة مثلا

خامسا: نقوم بإضافة Invalidate من داخل الحدث Resize وهو نفس الحدث الي سوف نشير إليه عند استخدام ImageAnimator.Animate

سادسا: من داخل الحدث Paint الخاص بالفورم نقوم برسم الصورة داخل أي مستطيل نحدده مسبقا وأيضا نقوم باستخدام ImageAnimator.UpdateFrames من داخل نفس الحدث وبالتالي نستخدم الأمر e.Graphics.DrawImage لكي نرسم الصورة داخل المستطيل الذي حددنا أبعاده مسبقا

وبالتالي يكون الكود النهائي كالتالي


كود :
Public Class Form1

Dim AnimatedImage As Bitmap = My.Resources.Mohd_01

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Me.DoubleBuffered = True

If ImageAnimator.CanAnimate(AnimatedImage) Then
ImageAnimator.Animate(AnimatedImage, New EventHandler(AddressOf Form1_Resize))

Else

MessageBox.Show("Exit Application....Bitmap used is not Animated", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information)
Application.Exit()

End If

End Sub

Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

ImageAnimator.UpdateFrames(AnimatedImage)
Dim m_rect As Rectangle = Me.ClientRectangle
e.Graphics.DrawImage(AnimatedImage, m_rect)

End Sub

Private Sub Form1_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
Me.Invalidate()
End Sub

End Class
}}}
تم الشكر بواسطة:


الردود في هذا الموضوع
مقال- الصور المتحركة في الدوت نت Animation - بواسطة Raggi Tech - 02-10-12, 06:41 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Video [درس فيديو] تقارير الكريستال ريبورت وتغيير مسار الصور أثناء التشغيل رمضان272 0 1,999 28-03-22, 03:18 AM
آخر رد: رمضان272
  شرح خوارزميات معالجة الصور (من دروس الاستاذ فوزي برزنجي) ناديه الشجيري 19 35,530 20-02-22, 02:13 PM
آخر رد: رضوان الجماعي
  التعامل مع الصور Images في بيئة الدوت نت باستخدام +GDI - مقدمة RaggiTech 3 6,341 30-07-21, 05:14 PM
آخر رد: kebboud
  مقال: الكومبو بوكس ComboBox كيف تضيف أيقونات Blue Sky 1 3,453 30-06-19, 10:41 AM
آخر رد: invocker
  Compare Images المقارنة بين الصور Abu Ehab 0 3,642 31-10-18, 04:27 PM
آخر رد: Abu Ehab
  التــعامل مع cmd من خلال الدوت نت مبتدئ في الاحتراف 3 4,039 02-06-18, 12:36 AM
آخر رد: YousefOkasha
  مقدمة إلي ضغط الصور ..... Zip Bitmap silverlight 0 2,598 10-05-18, 04:35 AM
آخر رد: silverlight
  Text Animation silverlight 1 2,297 26-10-17, 02:04 PM
آخر رد: sendbad100
  تفقيط الارقام فى الدوت نت مبرمج أوتار 17 13,411 20-04-17, 12:21 PM
آخر رد: محمد بوقزاحة
  مشروع لجلب الصور من الماسحة الضوئية (Scanner) m.sami.ak 14 12,918 22-01-17, 10:41 AM
آخر رد: amko

التنقل السريع :


يقوم بقرائة الموضوع: