تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
التعامل مع الصور Images في بيئة الدوت نت باستخدام +GDI - الجزء الثالث
#1
كاتب الموضوع : silverlight

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

الجزء الثالث: كيف نأخذ صورة لسطح المكتب

كما سبق وتحدثنا يوجد في الدوت نت كلاس هام جدا وهو Graphics Class وهذا الكلاس هو عصب +GDI وهناك طريقة Method بهذا الكلاس وهي CopyFromScreen وهذه الطريقة نستطيع باستخدامها أن نأخذ صورة لسطح المكتب. كيف نفعل ذلك
الفكرة ببساطة أننا نقوم بتعريف صورة Bitmap وأيضا Rectangle أبعاده تساوي أبعاد شاشة الكمبيوتر ثم باستخدام Graphics Class نقوم بأخذ صورة لسطح المكتب ثم يمكننا أن نستخدمها كما نشاء بعد ذلك والمثال التالي يوضح كيفية عمل ذلك
مثال علي ذلك
افتح مشروع جديد ثم أضف للفورم باتون و PictureBox ثم اكتب الكود بالشكل التالي في الحدث Click الخاص بالباتون


كود :
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Me.WindowState = FormWindowState.Minimized

Dim bounds As Rectangle = Screen.PrimaryScreen.Bounds
Dim screenshot As System.Drawing.Bitmap = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
Dim graph As Graphics = Graphics.FromImage(screenshot)
graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)

PictureBox1.Image = screenshot.GetThumbnailImage(PictureBox1.Width, PictureBox1.Height, Nothing, Nothing)

Me.WindowState = FormWindowState.Normal

End Sub

End Class
الأن لنقوم بتحويل هذا الكود الي دالة Function ونجعله أكثر فعالية ولنطلق علي الدالة اسم GetImageFromDeskTop وطبعا من الممكن الخروج بأكثر من دالة من الكود أعلاه والكود التالي يوضح شكل الدالة


كود :
Public Shared Function GetImageFromDeskTop() As Bitmap

Dim bounds As Rectangle = Screen.PrimaryScreen.Bounds
Dim screenShot As System.Drawing.Bitmap = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
Dim graph As Graphics = Graphics.FromImage(screenShot)
graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)

Return screenShot

End Function
المثال التالي يوضح كيفية استخدام هذه Function
افتح مشروع جديد ثم أضف للفورم باتون و PictureBox ثم اكتب الكود بالشكل التالي في الحدث Click الخاص بالباتون


كود :
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Me.WindowState = FormWindowState.Minimized
Dim scrBmp As Bitmap = GetImageFromDeskTop()
PictureBox1.Image = scrBmp.GetThumbnailImage(PictureBox1.Width, PictureBox1.Height, Nothing, Nothing)
Me.WindowState = FormWindowState.Normal

End Sub

Public Shared Function GetImageFromDeskTop() As Bitmap

Dim bounds As Rectangle = Screen.PrimaryScreen.Bounds
Dim screenShot As System.Drawing.Bitmap = New System.Drawing.Bitmap(bounds.Width, bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
Dim graph As Graphics = Graphics.FromImage(screenShot)
graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)

Return screenShot

End Function

End Class
والأن لنبني أشكالا أخري لهذه Function وسنحتفظ بنفس الاسم للدالة وهو GetImageFromDesktop
الكود التالي يوضح شكل أخر لهذه Function


كود :
Public Shared Function GetImageFromDeskTop(ByVal Bounds As Rectangle) As Bitmap

Dim screenShot As System.Drawing.Bitmap = New System.Drawing.Bitmap(Bounds.Width, Bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
Dim graph As Graphics = Graphics.FromImage(screenShot)
graph.CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy)

Return screenShot

End Function
سنلاحظ في الدالة اعلاه أننا أعطينا المستخدم أفضلية تحديد أبعاد الجزء الذي يستطيع تصويره من علي سطح المكتب

والكود التالي يوضح شكل أخر لهذه Function


كود :
Public Shared Function GetImageFromDeskTop(ByVal Bounds As Rectangle, ByVal Owner As Form) As Bitmap

Dim frm As Form = Owner

Owner.WindowState = FormWindowState.Minimized
Dim screenShot As System.Drawing.Bitmap = New System.Drawing.Bitmap(Bounds.Width, Bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
Dim graph As Graphics = Graphics.FromImage(screenShot)
graph.CopyFromScreen(Bounds.X, Bounds.Y, 0, 0, Bounds.Size, CopyPixelOperation.SourceCopy)

Owner.WindowState = FormWindowState.Normal

Return screenShot

End Function
سنلاحظ في الدالة اعلاه أننا أعطينا المستخدم أفضلية تحديد أبعاد الجزء الذي يستطيع تصويره من علي سطح المكتب وأيضا الأفضلية لجعل الفورم State تساوي Minimize ثم تتحول القيمة الي Normal بعد أخذ الصورة
والكود التالي يوضح كيفية استخدام الدالة الأخيرة


كود :
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim scrBmp As Bitmap = GetImageFromDeskTop(New Rectangle(100, 100, 200, 200), Me)
PictureBox1.Image = scrBmp.GetThumbnailImage(PictureBox1.Width, PictureBox1.Height, Nothing, Nothing)

End Sub

Public Shared Function GetImageFromDeskTop(ByVal Bounds As Rectangle, ByVal Owner As Form) As Bitmap

Dim frm As Form = Owner

Owner.WindowState = FormWindowState.Minimized
Dim screenShot As System.Drawing.Bitmap = New System.Drawing.Bitmap(Bounds.Width, Bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
Dim graph As Graphics = Graphics.FromImage(screenShot)
graph.CopyFromScreen(Bounds.X, Bounds.Y, 0, 0, Bounds.Size, CopyPixelOperation.SourceCopy)

Owner.WindowState = FormWindowState.Normal

Return screenShot

End Function

End Class



بالتوفيق

أخوكم عمر
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  اصنع محرر أكواد خاص بك باستخدام الأداة RichTextBox السكر المغرور 9 1,919 21-10-17, 03:03 PM
آخر رد: farhat ali
  [مقال] دوال التعامل مع النصوص Strings - VB.NET ابو ليلى 7 1,148 13-10-17, 05:39 PM
آخر رد: farhat ali
  مقارنة صورتين و الحصول علي الفرق بينهم Comparing Two Images and Get Diff Image silverlight 0 265 30-06-17, 11:33 AM
آخر رد: silverlight
  تفقيط الارقام فى الدوت نت مبرمج أوتار 17 4,888 20-04-17, 12:21 PM
آخر رد: محمد بوقزاحة
  مشروع لجلب الصور من الماسحة الضوئية (Scanner) m.sami.ak 14 5,245 22-01-17, 10:41 AM
آخر رد: amko
  مقدمة إلي إخفاء المعلومات - الجزء الأول silverlight 5 480 07-01-17, 10:44 PM
آخر رد: Basil Abdallah
  مقدمة إلي إخفاء المعلومات - الجزء الثاني silverlight 1 349 06-01-17, 11:52 AM
آخر رد: silverlight
  التعامل مع الملفات الصوتية ........دردشة برمجية RaggiTech 7 4,157 26-12-16, 02:40 AM
آخر رد: sayed fox
  كيفية قراءة ملف باستخدام IntPtr الخاص بالملف silverlight 3 427 24-12-16, 03:13 AM
آخر رد: silverlight
  التعامل مع جهاز الكمبيوتر من Command Prompt silverlight 7 601 22-12-16, 06:07 PM
آخر رد: silverlight

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


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