تقييم الموضوع :
  • 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



بالتوفيق

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [درس فيديو] تحذير هام في التعامل مع For و Try ali.alfoly 3 104 أمس, 12:43 AM
آخر رد: silverlight
Wink [مقال] كفية التعامل مه الجملة الشرطية IF alims 8 3,519 19-11-16, 01:06 AM
آخر رد: LoveVb
  اصنع محرر أكواد خاص بك باستخدام الأداة RichTextBox السكر المغرور 8 1,531 03-09-16, 07:59 PM
آخر رد: tryold
  مشروع لجلب الصور من الماسحة الضوئية (Scanner) m.sami.ak 12 4,031 25-08-16, 09:30 PM
آخر رد: jassim316
  شرح خوارزميات معالجة الصور (من دروس الاستاذ فوزي برزنجي) ناديه الشجيري 14 7,800 09-04-16, 11:26 PM
آخر رد: بديع
  [درس فيديو] تشغيل اوامر Run من البرنامج & مثال غلق الويندوز بعد وقت محدد باستخدام VB.net أحمد النجار 1 541 23-12-15, 04:26 AM
آخر رد: الماجيك مسعد
Big Grin [مقال] كفية التعامل مع حلقة التكرار For , For Each alims 8 3,481 01-11-15, 11:51 PM
آخر رد: adel27
  [VB.NET] تشغيل Twain الخاص بسحب الصور من السكنر في حالة net framework4 ahmed saleh 4 672 25-10-15, 07:20 PM
آخر رد: عدنان الشمري
  Create, Save Tiff Image & Extract Images From TIFF Image silverlight 0 326 09-10-15, 01:40 PM
آخر رد: silverlight
  [VB.NET] التشفير باستخدام خوارزمية rsa alking-0999 10 1,386 08-07-15, 04:24 PM
آخر رد: مبرمج بلا حدود

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


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