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

الصور المتحركة في الدوت نت Animation
اللغة المستخدمة: الفيجوال بيسك
التطبيق: فيجوال استوديو 2005 و 2008
المستوي: التقييم متروك للقارئ
إعداد: مهندس / عمر أمين إبراهيم

ماذا تعني كلمة Animation

كما تعلمون الكلمة تعريفها ومفهومها بسيط جدا وهي تعني استخدام بعض الصور المرسومة في 2D بتسلسل معين لتخليق أو لصناعة حركة وهمية وبالتالي يشعر المستخدم أن الصورة تتحرك

من أشهر الملفات المستخدمة في تحريك الصور هي الملفات التي لها امتداد GIF وأيضا بعض الملفات الشهيرة الأخري وهي التي تستخدم في الفيديو تحديدا وهي MPEG و AVI

أيضا وكما تعلمون هناك الكثير من البرامج الجاهزة التي من الممكن استخدامها في صناعة ملفات لصور متحركة ومنها مثلا Windows Movie Maker وهو برنامج موجود مع نظام التشغيل في الويندوز ويمكن استخدامه لصناعة أفلام فيديو بسيطة مثلا أيضا يوجد برنامج أخر يستخدم في صناعة ملفات GIF وهو PhotoImpact GIF Animator وهناك الكثير والكثير من البرامج التي تتعامل مع Image Editing وأيضا Video Editing

كيف نقوم بعرض صور متحركة داخل برامجنا

أعتقد أسهل الطرق هي أن يكون لدينا صورة متحركة جاهزة امتدادها من النوع GIF ومصممه بأي من البرامج الجاهزة ثم نضيف للفورم PictureBox ثم ببساطة نضيف هذا الصورة الي الصفة PictureBox.Image وينتهي الأمر بسهولة وبالتالي يصبح لدينا صورة متحركة يمكن استخدامها في برامجنا

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

في واقع الأمر يمكننا أن نفعل ذلك باستخدام +GDI إذن كما تلاحظون أن +GDI هي كلمة السر أو المفتاح للكثير من الأشياء مثل تغيير شكل الكونترول أو تغيير شكل الفورم أو بناء الصور والتعامل معها الي أخره من الأشياء
لذلك إن دراسة وفهم +GDI شئ هام جدا لأي مبرمج.

تعلم +GDI عزيزي القارئ أضمن لك أن تكون مبرمجا رائعا

الأن لنتحدث عن كيفية صناعة صورة متحركة في الدوت نت وتحديدا باستخدام الفيجوال بيسك دوت نت

المثال الأول:

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

ثانيا: نضيف Timer الي الفورم رقم 1

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

رابعا: نقوم بتعريف متغيران فقط لا غير.
المتغير الأول عبارة عن مصفوفة ArrayList وسوف تستخدم هذه المصفوفة كمخزن لجميع الصور
والمتغير الثاني عبارة عن Integer وهو سيكون بمثابة عداد نحدد به رقم الصورة داخل المصفوفة

خامسا: في الحدث Load الخاص بالفورم Form1 نقوم بإضافة جميع الصور الموجودة في Resources إلي المصفوفة وأيضا نقوم بجعل Timer1.Enabled = True أي نقوم بتشغيل التايمز

سادسا: في الحدث Tick الخاص بالتايمر Timer1 نقوم بإعطاء قيم للمتغير الرقمي ثم نقوم بإضافة الصور الي الفورم Background كما هو موضح بالكود التالي


كود :
Public Class Form1

Private m_Images As ArrayList = New ArrayList()
Private m_Count As Integer = 1

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

m_Images.Add(My.Resources._04_001_0001)
m_Images.Add(My.Resources._04_001_0002)
m_Images.Add(My.Resources._04_001_0003)
m_Images.Add(My.Resources._04_001_0004)
m_Images.Add(My.Resources._04_001_0005)

Timer1.Enabled = True

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

m_Count = (m_Count + 1) Mod 5
Me.BackgroundImage = CType(m_Images(m_Count), Image)
End Sub

End Class

الأن نقوم بتشغيل المشروع سنجد أن الصور تتحرك داخل الفور وبذلك نكون قد صممنا صورة متحركة وأضفناها للفورم.

أعتقد أن الفكرة سهلة جدا لكن ليست إحترافية علي سبيل المثال جرب تكبر الفورم أثناء تشغيل البرنامج ستلاحظ أن الصورة المتحركة موجودة بأكثر من مكان داخل الفورم

السبب أن الفورم له صفه هي BackgroundImageLayout وعندما نذهب الي النافذة الخاصة بصفات الفورم سنجد أن القيمة الافتراضية لهذه الصفة Tile جرب مثلا تغير هذه القيمة إما عن طريق نافذة Properties أو أن تكتب ذلك عن طريق الكود مثلا لنجعل قيمة هذه الخاصية Stretch أو Center أو Zoom ستجد أن الصورة تظهر مهتزة وليست احترافية والسبب أن هناك Flickering يحدث أثناء تغيير الصورة في خلفية البرنامج وقت التشغيل لذلك هنا علينا أيضا أن نقوم بتغيير قيمة خاصية في الفورم وهي DoubleBuffered ونجعل قيمتها True لكي نقلل من Flickering أثناء تشغيل البرنامج

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

المثال الثاني:

أولا: نضيف فورم أخر الي المشروع وننفذ عليه الخطوات التالية

ثانيا: نضيف Timer و أيضا PictureBox الي الفورم رقم 2

ثالثا: نقوم بتعريف متغيران فقط لا غير.
المتغير الأول عبارة عن مصفوفة ArrayList وسوف تستخدم هذه المصفوفة كمخزن لجميع الصور
والمتغير الثاني عبارة عن Integer وهو سيكون بمثابة عداد نحدد به رقم الصورة داخل المصفوفة

رابعا: في الحدث Load الخاص بالفورم Form2 نقوم بإضافة جميع الصور الموجودة في Resources إلي المصفوفة وأيضا نقوم بجعل Timer1.Enabled = True أي نقوم بتشغيل التايمز وأيضا سنضيف بعض الكود لكي نحدد بعض صفات PictureBox1 مثل خاصية Image وخاصية Size بأبعاد الصورة

خامسا: في الحدث Tick الخاص بالتايمر Timer1 نقوم بإعطاء قيم للمتغير الرقمي ثم نقوم بإضافة الصور الي PictureBox1 كما هو موضح بالكود التالي



كود :
Public Class Form2

Private m_Images As ArrayList = New ArrayList()
Private m_Count As Integer = 1

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

m_Images.Add(My.Resources._04_001_0001)
m_Images.Add(My.Resources._04_001_0002)
m_Images.Add(My.Resources._04_001_0003)
m_Images.Add(My.Resources._04_001_0004)
m_Images.Add(My.Resources._04_001_0005)

PictureBox1.Image = My.Resources._04_001_0001
PictureBox1.Size = PictureBox1.Image.Size
Timer1.Enabled = True

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

m_Count = (m_Count + 1) Mod 5
PictureBox1.Image = CType(m_Images(m_Count), Image)
End Sub

End Class

الأن علينا أن نقوم بتجربة الفورم رقم 2 سنلاحظ أن كل شئ تمام وحتى لو قمنا بتغيير أبعاد الفورم فإن ذلك لن يؤثر علي أداء الصورة المتحركة نهائيا
}}}}
تم الشكر بواسطة:
#2
كيف نستفيد من الصور المتحركة؟

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

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

المثال الثالث:

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

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

ثالثا: نضيف كلاس جديد الي المشروع ونطلق عليه AnimatedButton وهنا نضيف PictureBox لهذا الكلاس عن طريق استخدام الوراثة

ثالثا: نضيف بعض المتغيرات تعبر عن الصور التي تمت إضافتها الي المشروع ثم من داخل Constructor او داخل Sub New وأيضا نغير من بعض صفات PictureBox

رابعا: نقوم بعمل Overrides لحركة الماوس في حالة OnMouseHover و أيضا في حالة OnMouseLeave ثم أخيرا في حدث OnMouseDown ونقوم بتغيير الخاصية Image مع الصورة المناسبة لها

وبالتالي يكون الكود النهائي الخاص بهذا الكلاس كالأتي



كود :
Public Class AnimatedButton

Inherits PictureBox

Private isAnimating As Boolean = False
Private m_CloseHov As Bitmap = My.Resources.eq_close_hov
Private m_CloseNo As Bitmap = My.Resources.eq_close_no
Private m_CloseDo As Bitmap = My.Resources.eq_close_do

Public Sub New()

Me.SetStyle(ControlStyles.OptimizedDoubleBuffer Or _
ControlStyles.Selectable Or _
ControlStyles.AllPaintingInWmPaint Or _
ControlStyles.StandardClick Or _
ControlStyles.UserPaint, True)

Me.BackColor = Color.Transparent
Me.Image = m_CloseNo
Me.Size = Me.Image.Size
Me.MinimumSize = Me.Image.Size
Me.MaximumSize = Me.Image.Size
Me.ErrorImage = Nothing
Me.DoubleBuffered = True

End Sub

Protected Overrides Sub OnMouseHover(ByVal e As System.EventArgs)
MyBase.OnMouseHover(e)
Me.Image = m_CloseHov
End Sub

Protected Overrides Sub OnMouseLeave(ByVal e As System.EventArgs)
MyBase.OnMouseLeave(e)
Me.Image = m_CloseNo
End Sub

Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
MyBase.OnMouseDown(e)
Me.Image = m_CloseDo
End Sub

End Class
أخيرا: نقوم ببناء المشروع من قائمة Build سنلاحظ أن الكلاس قد أصبح موجود داخل Toolbox وبالتالي يمكننا إضافته الي الفورم بسهولة

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


كود :
Public Class Form1

Private Sub AnimatedButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AnimatedButton1.Click

Application.Exit()

End Sub

End Class
كما تلاحظون أنني لم أتوقف كثيرا لكي أوضح الكود السابق بالتفصيل لأنه كود بسيط جدا وأعتقد أن الكثيرين منكم قد صمموا أشياء مماثلة مرات عديدة.

عموما لمن يريد معلومات إضافية يمكنه قراء الموضوعات المتعلقة بتطوير الكونترول والموجودة بالموقع أو يمكنه قراءة الموضوعات الكثيرة الموجودة في المندي و التي يقوم بكتابتها الأخوة الزملاء الأفاضل فهي كثيرة والحمد لله رب العالمين
}}}}
تم الشكر بواسطة:
#3
كيف نحرك التكست في الدوت نت

من الأشياء الطريفة في الدوت نت هي عملية تحريك Text أو بمعني أدق Scrolling Text بحيث تجعل المستخدم يشعر أن التكسب يتحرك

كلنا شاهدنا في Windows Media Player كيف يتم عرض بيانات الملف وامتداده في صورة متحركة كيف فعلوا ذلك في واقع الأمر الكود ليس بجديد علي الكثيرين لكن بما أننا نتحدث عن Animation بشكل عام أحببت أن انوه عن الأمر ليس إلا و أيضا لن أتوقف كثيرا في شرح هذا الكود لأنه ليس أمرا صعبا علي الإطلاق

المثال الرابع:

عموما الفكرة تعتمد علي استخدام الكلاس MicroSoft.VisualBasic Strings Class
وهناك الكثير من الأفكار لتحريك التكست ولكن الفكرة التالية أبسطهم علي الإطلاق

لتنفيذ ذلك نفتح مشروعا جديدا ونطلق عليه AnimatedText مثلا
نضيف للمشروع Timer و Label فقط لا غير ثم نكتب الكود كالتالي


كود :
Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Enabled = True
Do While Label1.Text.Length < 20
Label1.Text = Label1.Text & " "
Loop
End Sub


Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

Label1.Text = Microsoft.VisualBasic.Right(Label1.Text, 1) & Microsoft.VisualBasic.Left(Label1.Text, Label1.Text.Length - 1)

End Sub

End Class
}}}}
تم الشكر بواسطة:
#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
}}}}
تم الشكر بواسطة:
#5
كيف نرسم داخل صورة متحركة؟

يتبقي شئ أخير سنقوم بتنفيذه وهو مرتبط بسؤال سألته احدي الأخوات بالمنتدى السؤال كان كالأتي
كيف أضيف Label شفاف الي الصورة الموجودة في PictureBox في الواقع وبعد إجابتها علي سؤالها تفضلت الأخت وسألت مرة ثانية ماذا لو كانت الصورة صورة متحركة............تحديدا المقطع الثاني من السؤال هو ما أريد التركيز عليه وهو كيف نرسم داخل صورة متحركة

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

المثال السادس:


كود :
Public Class Form2

Dim AnimatedImage As Bitmap = My.Resources.Mohd_01

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

' نقوم بتغير بعض الصفات للبكتشر بوكس
PictureBox1.Location = New Point(0, 0)
PictureBox1.Size = New Size(200, 200)
PictureBox1.BorderStyle = BorderStyle.Fixed3D
PictureBox1.BackColor = Color.Yellow

' استخدام جملة شرطية لتحديد اذا كانت الصورة متحركه أم لا
If ImageAnimator.CanAnimate(AnimatedImage) Then

' تحريك الصورة باستخدام الكلاس
' ImageAnimator
' مع إضافة EventHandler يشير الي
' Form Resize event
' حيث هناك يتم استخدام PictureBox1.Inavlaidte
' لإجبار البكتشر بوكس علي اعادة رسم نفسه
ImageAnimator.Animate(AnimatedImage, New EventHandler(AddressOf Form2_Resize))

Else
' مجرد رسالة تظهر في حالة اذا كانت الصورة المستخدمة صوره غير متحركه مثلا
' وهذا الاسلوب يستخدم غالبا في حالة اذا اعطينا المستخدم حرية اختيار الصورة مثلا
' وبالتالي لو حدث خطأ عند اختيار نوع الصورة يقوم البرنامج بإظهار مثل هذه الرسالة ثم يقوم بتنفيذ
' الكود الذي يلي الرسالة
MessageBox.Show("Exit Application....", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information)
Application.Exit()

End If
End Sub

Private Sub Form2_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
' لإجبار البكتشر بوكس علي اعادة رسم نفسه
PictureBox1.Invalidate()

End Sub


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

' تعريف الفونت الذي سوف نستخدمه في رسم التكست داخل الصورة المتحركة
Dim m_font As New Font("Times New Roman", 20)

' نستخدم الكلاس ImageAnimator
' ونقوم بعمل UpdateFrames
' للصورة المتحركة
ImageAnimator.UpdateFrames(AnimatedImage)

' نقوم بتعريف أبعاد المستطيل الذي سنرسم الصورة بداخلة وهنا قمت بتحديد قيمته بناء علي ابعاد البكتشر بوكس
' من الممكن طبعا تغيير ابعاد المستطيل حسبما نريد علي سبيل المثال نجعله كالتالي
'Dim m_rect As Rectangle = New Rectangle(0, 0, 100, 100)
' لو نظرنا الي الصورة المستخدمة سنلاحظ أن أبعدها اكبر من أبعاد البكتشر بوكس المستخدم
Dim m_rect As Rectangle = PictureBox1.ClientRectangle

' هذا السطر من الكود يقوم برسم الصورة المتحركة داخل المستطيل
e.Graphics.DrawImage(AnimatedImage, m_rect)

' هذا السطر من الكود يقوم برسم التكست داخل الصورة المتحركة باستخدام الفونت الذي حددناه
' ويتم الرسم في نقطة معينه داخل البكتشر بوكس وهي النقطة المحدده قيمتها في اتجاه المحور الافقي = 20
' وفي اتجاه المحور الراسي = 20
' من الممكن تغير قيم هذه النقط طبقا لما نريد
e.Graphics.DrawString(" اللـــــــــه أكبر", m_font, Brushes.Black, 20, 20)
m_font.Dispose()

End Sub

End Class
أتمني أن يكون الموضوع مفيدا

و ستجدون بالمرفقات جميع الملفات التي تغطي الموضوع كاملا ولكن بنسخة الفيجوال استوديو 2008 فقط أعتذر لانني لم لا استطيع أن ارفعها بنسخة 2005 حيث انني لم أعد استخدم نسخة الفيجوال 2005 بسبب مساكلها الكثيرة

أعتقد من الممكن الأن ان يفكر البعض منكم بتصميم برامج لتحريك الصور فالأمر كما ترون سهل جدا وهو يعتمد غالبا علي معظم الأفكار التي قمنا بتغطيتها في هذا المقال

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

بالتوفيق لكم جميعا
أخوكم عمر
}}}}
تم الشكر بواسطة:
#6
أعتذر لأنني لم استطع رفع الملفات علي الموقع نظرا لأن حجم الملفات كبير لذا سارفعها في مكان ما واضع اللينك لكم لاحقا


تمنياتي بالتوفيق للجميع
أخوكم عمر
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مشروع لجلب الصور من الماسحة الضوئية (Scanner) m.sami.ak 12 4,011 25-08-16, 09:30 PM
آخر رد: jassim316
  شرح خوارزميات معالجة الصور (من دروس الاستاذ فوزي برزنجي) ناديه الشجيري 14 7,756 09-04-16, 11:26 PM
آخر رد: بديع
  [VB.NET] تشغيل Twain الخاص بسحب الصور من السكنر في حالة net framework4 ahmed saleh 4 663 25-10-15, 07:20 PM
آخر رد: عدنان الشمري
  [VB.NET] التعامل مع الصور في vb net أحمد النجار 2 999 03-06-15, 10:45 PM
آخر رد: أحمد النجار
  [مقال] تشغيل برمجيات الدوت نت بدون تنصيب النت فروم ويرك m0075 13 4,112 13-02-14, 08:29 PM
آخر رد: Omar Mekkawy
  تفقيط الارقام فى الدوت نت مبرمج أوتار 16 3,722 30-08-13, 01:01 AM
آخر رد: abatenovtch
  التــعامل مع cmd من خلال الدوت نت مبتدئ في الاحتراف 2 530 24-04-13, 07:58 PM
آخر رد: مبتدئ في الاحتراف
  مقال- كيفية الاستغناء عن الداتا بيز التقليدية في برامجنا – ألجزء الأول RaggiTech 1 1,243 06-10-12, 12:23 AM
آخر رد: RaggiTech
  مقال- تطوير الكونترول Property Attributes الجزء الثالث RaggiTech 0 365 06-10-12, 12:20 AM
آخر رد: RaggiTech
  مقال- تطوير الكونترول Skin Control RaggiTech 0 530 06-10-12, 12:08 AM
آخر رد: RaggiTech

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


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