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



بالتوفيق

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  نظرة على DropBox SDK و التعامل معها +برنامج رفع و تحميل ملفات ابو ليلى 4 4,871 08-09-22, 11:54 AM
آخر رد: saif2023
  الجزء الثالث من:كيف تجعل الـ Text Box ذكي!يترجم العمليات الحسابية ويخرج الناتج (الأقواس المتعددة) !! أنس محمود 10 7,827 19-07-22, 12:15 AM
آخر رد: StartLight4000
Video [درس فيديو] تقارير الكريستال ريبورت وتغيير مسار الصور أثناء التشغيل رمضان272 0 1,607 28-03-22, 03:18 AM
آخر رد: رمضان272
  شرح خوارزميات معالجة الصور (من دروس الاستاذ فوزي برزنجي) ناديه الشجيري 19 34,332 20-02-22, 02:13 PM
آخر رد: رضوان الجماعي
  التعامل مع الصور Images في بيئة الدوت نت باستخدام +GDI - مقدمة RaggiTech 3 5,858 30-07-21, 05:14 PM
آخر رد: kebboud
Lightbulb [مقال] التعامل مع ملفات اوفيس من خلال مكتبة NPOI ابو ليلى 2 4,192 01-07-21, 11:42 AM
آخر رد: kebboud
Lightbulb [مقال] التعامل مع اختصارات الملفات Shortcuts Magic Sword 2 4,414 01-10-20, 11:36 AM
آخر رد: abomo3ath
  [مقال] دوال التعامل مع النصوص Strings - VB.NET ابو ليلى 10 25,065 15-04-19, 07:09 PM
آخر رد: alsouf
  Compare Images المقارنة بين الصور Abu Ehab 0 3,269 31-10-18, 04:27 PM
آخر رد: Abu Ehab
  اصنع محرر أكواد خاص بك باستخدام الأداة RichTextBox السكر المغرور 13 7,506 19-08-18, 09:27 AM
آخر رد: elgokr

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


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