تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مقال - الصور المتحركة في الدوت نت Animation الجزء الثاني
#2
الكونترول Slider

غالبا يسمح برنامج Power Point لمستخدميه بإضافة بعض الصور ومن ثم يتيح للمستخدم تحريك هذه الصور علي شكل Slides و أيضا يتيح للمستخدم إمكانية تحديد الإتجاه الذي سوف تظهر منه الصورة فعلي سبيل المثال الصورة يمكن أن تظهر من اليسار الي اليمين أو من أسفل إلي اعلي أو من الممكن أن تتحرك الصورة بشكل قطري من أسفل الي اعلي والعكس

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



كود :
Public Enum SlideEffects

' Image Slides from Left to right
LeftToRight

' Image Slides from right to left
RighTotLeft

' Image slide from top to down
TopToDown

' Image slide from down to top
DownToTop

' Image slide diagonally from top left to bottom right
TopLeftToBottomRight

' Image slide diagonallyfrom bottom right to top left
BottomRightToTopLeft

' Image slide diagonally from bottom left to top right
BottomLeftToTopRight

' Image slide diagonally from top right to bottom left
TopRightToBottomLeft

End Enum
صفات الكونترول Control Property

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

§ SlidingEffect والهدف منها هو تحديد إتجاه الصورة


كود :
<System.ComponentModel.DefaultValue(GetType(SlideEffects), "LeftToRight")> _
<System.ComponentModel.Description("Set iamge direction.")> _
<System.ComponentModel.Category("Control Style")> _
Public Property SlidingEffect() As SlideEffects
Get
Return m_slidEffect
End Get
Set(ByVal value As SlideEffects)
m_slidEffect = value
End Set
End Property
§ SlidingImage والهدف منها هو تحديد الصورة التي سوف تستخدم داخل الكونترول


كود :
<System.ComponentModel.DefaultValue(GetType(Bitmap), "")> _
<System.ComponentModel.Description("Set iamge.")> _
<System.ComponentModel.Category("Control Style")> _
Public Property SlidingImage() As Bitmap
Get
Return m_slidingBmp
End Get
Set(ByVal value As Bitmap)
m_slidingBmp = value
End Set
End Property
§ SlidingSpeed والهدف منها هو التحكم في سرعة حركة الصورة


كود :
<System.ComponentModel.DefaultValue(GetType(Single), "2")> _
<System.ComponentModel.Description("Set slide speed.")> _
<System.ComponentModel.Category("Control Style")> _
Public Property SlidingSpeed() As Single
Get
Return CSng(m_slidingSpeed.TotalSeconds)
End Get
Set(ByVal value As Single)
m_slidingSpeed = New TimeSpan(0, 0, 0, 0, CInt((1000 * value)))
End Set
End Property

التحكم في الصورة المتحركة

تم إضافة Public Sub للتحكم في حركة الصورة وهو يسمي AnimateSlide حيث هو المسؤل عن تحريك الصورة والكود الخاص به كالتالي



كود :
Public Sub AnimateSlide()
m_thread = New System.Threading.Timer(New System.Threading.TimerCallback(AddressOf ThreadTimer_Tick), Nothing, 30, 30)
m_percent = 0
m_sliding = True
m_startTime = DateTime.Now
Invalidate()
End Sub
رسم الصورة المتحركة

تم إضافة Protected Sub حيث فيه تتم عملية الرسم والفكرة هنا مبنية علي إستخدام الكلاس Matrix ومن ثم نقوم بعمل Transform للرسم باستخدام هذه Matrix ومن ثم نرسم الصورة طبقا للحالة الخاصة بها أو طبقا لاتجاهها في Enum والكود تكراري تقريبا ولكن يختلف طبقا للاتجاه الموجود في SlideEffects Enum والكود التالي يوضح جزء من هذا الإجراء



كود :
Protected Sub DrawSlidingEffect(ByVal g As Graphics, ByVal control As ImageSlider)

If m_slidingBmp IsNot Nothing Then

Select Case m_slidEffect

Case SlideEffects.BottomLeftToTopRight
Dim mx As New Drawing2D.Matrix(1, 0, 0, 1, (control.Width * m_percent / 100) - control.Width, -(control.Height * m_percent / 100) + control.Height)
g.Transform = mx
g.DrawImage(m_slidingBmp, control.ClientRectangle, 0, 0, m_slidingBmp.Width, m_slidingBmp.Height, GraphicsUnit.Pixel)
mx.Dispose()
Exit Select

' ......... rest of code

End Select
End If

End Sub

كيف تستخدم الكونترول

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



كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ImageSlider1.SlidingEffect = SlideEffects.DownToTop
ImageSlider1.AnimateSlide()
End Sub
ويمكن أيضا استخدام Timer ومن ثم نقوم بتغيير الصورة الموجودة في الكونترول كل فتره زمنية مناسبة أو يمكنكم استخدامه بالشكل الذي يناسبكم

وبالمرفقات ستجدون نسخة كاملة من الكلاس وطريقة استخدامه و الملف المرفق بنسخة الفيجوال استوديو 2008

وإن شاء رب العزة سوف نكمل إضافة باقي المؤثرات الأخري في مقال لاحق

مع تحياتي للجميع
أخوكم عمر


الملفات المرفقة
.rar   ImageSlider_v1_src.rar (الحجم : 88.92 ك ب / التحميلات : 77)
}}}
تم الشكر بواسطة:


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

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الجزء الثالث من:كيف تجعل الـ Text Box ذكي!يترجم العمليات الحسابية ويخرج الناتج (الأقواس المتعددة) !! أنس محمود 10 8,762 19-07-22, 12:15 AM
آخر رد: StartLight4000
Video [درس فيديو] تقارير الكريستال ريبورت وتغيير مسار الصور أثناء التشغيل رمضان272 0 2,107 28-03-22, 03:18 AM
آخر رد: رمضان272
  شرح خوارزميات معالجة الصور (من دروس الاستاذ فوزي برزنجي) ناديه الشجيري 19 36,170 20-02-22, 02:13 PM
آخر رد: رضوان الجماعي
  التعامل مع الصور Images في بيئة الدوت نت باستخدام +GDI - مقدمة RaggiTech 3 6,536 30-07-21, 05:14 PM
آخر رد: kebboud
  مقال: الكومبو بوكس ComboBox كيف تضيف أيقونات Blue Sky 1 3,531 30-06-19, 10:41 AM
آخر رد: invocker
  Compare Images المقارنة بين الصور Abu Ehab 0 3,739 31-10-18, 04:27 PM
آخر رد: Abu Ehab
  التــعامل مع cmd من خلال الدوت نت مبتدئ في الاحتراف 3 4,160 02-06-18, 12:36 AM
آخر رد: YousefOkasha
  مقدمة إلي ضغط الصور ..... Zip Bitmap silverlight 0 2,675 10-05-18, 04:35 AM
آخر رد: silverlight
  حساب قيمة معادلة(اقصد صيغة دون مجاهيل) مكتوبة بالتكست : الجزء الخامس والاخير محمد شريقي 4 4,972 23-02-18, 10:44 PM
آخر رد: العواد الصغير
  Text Animation silverlight 1 2,387 26-10-17, 02:04 PM
آخر رد: sendbad100

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم