إنشاء تطبيق لتصوير سطح المكتب مع امكانية تحديد جزء لالتقاط الصورة

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

إنشاء تطبيق لتصوير سطح المكتب مع امكانية تحديد جزء لالتقاط الصورة

مُساهمة من طرف المبرمج الطموح في السبت أغسطس 24, 2013 11:46 am

بسم الله الرحمن الرحيم

أهلا بكم ...معظمنا يستخدم الامر PrintScreen فى لوحة المفاتيح لتصوير سطح المكتب أو نوافذ البرامج المختلفة ...لكن هل اردت أن تقوم بإنشاء تطبيق لتصوير سطح المكتب مع أمكانية تحديد الجزء المراد تصويرة ....أتبع الخطوات التالية فقط :


1_ افتح Visual Studio 2008 لانشاء مشروع جديد من نوع Windows Application

2_قم بإضافة العنصر ContextMenuStrip و العنصر NotifyIcon الى النافذة وذلك من خلال السحب من شريط الادوات الجانبى toolbox

3_ أجعل الخاصية ContextMenuStrip للعنصر NotifyIcon تساوى contextMenuStrip1

4_ قم بإضافة عدد 2 قائمة الى العنصر ContextMenuStrip1 وليكن بأسم Grab Screenshot و Select Area

5_ قم بتغير خصائص النافذة على النحو التالى :

Opacity : 20% , FormBorderStyle : SizableToolWindow , TopMost : True

6_ نقوم بكتابة الاكواد على النحو التالى :

_ استيراد المكتبات اللازمة :

الرمز:
Imports System.Drawing
Imports System.Drawing.Imaging
_  انقر نقرا مزدوجا فوق العنصر MENUITEM وإضافة التعليمات البرمجية التالية فى حدث الحدث click event:
الرمز:
Private Sub GrabScreenshotToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GrabScreenshotToolStripMenuItem.Click
        Dim bmpSS As Bitmap
        Dim gfxSS As Graphics
 
        bmpSS = New Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb)
        gfxSS = Graphics.FromImage(bmpSS)
        gfxSS.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy)
 
        Dim saveDialog As New SaveFileDialog
        saveDialog.Filter = "JPeg Image|*.jpg"
        saveDialog.Title = "Save Image as"
        saveDialog.ShowDialog()
        If saveDialog.FileName <> "" Then
            bmpSS.Save(saveDialog.FileName, ImageFormat.Jpeg)
        End If
 
    End Sub
في التعليمات البرمجية أعلاه، قمنا بإنشاء صورة نقطية جديدة والتي تساوي العرض والارتفاع من الشاشة الرئيسية ثم نقوم بإنشاء رسومات جديدة باستخدام صورة نقطية. وتم استخدم CopyFromScreen  لالتقاط صورة الشاشة....وقمنا بإنشاء كائن من SaveFileDialog وعرضه للمستخدم لاختيار الموقع وحفظ الملف كصورة JPEG

_ فى حدث تحميل النافذة Form load ...نكتب التعليمات التالية :

الرمز:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.ShowInTaskbar = False
        Me.WindowState = FormWindowState.Minimized
        Me.Hide()
    End Sub
و الكود اعلاه يقوم بتنزيل النافذة الى جوار الساعة فى شريط المهام taskbar

_فى حدث النقر على القائمة SelectArea نكتب التعليمات التالية :
الرمز:
Private Sub SelectAreaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SelectAreaToolStripMenuItem.Click
        Me.Show()
        Me.WindowState = FormWindowState.Normal
    End Sub
_ فى حدث النقر المزدوج على النافذة نكتب التعليمات التالية :

الرمز:
Private Sub Form1_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.DoubleClick
        Try
            bmp = New Bitmap(Me.Size.Width, Me.Size.Height, PixelFormat.Format32bppArgb)


            graphics = Graphics.FromImage(bmp)
            graphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy)

            Dim saveDialog As New SaveFileDialog
            saveDialog.Filter = "JPeg Image|*.jpg"
            saveDialog.Title = "Save Image as"
            saveDialog.ShowDialog()
            If saveDialog.FileName <> "" Then
                bmp.Save(saveDialog.FileName, ImageFormat.Jpeg)
            End If
            bmp.Dispose()
            graphics.Dispose()

            Me.Hide()
            Me.WindowState = FormWindowState.Minimized
        Catch ex As Exception

        Finally
            bmp = Nothing
            graphics = Nothing
        End Try

    End Sub
End Class
كل الذي قمنا به في الرمز المبين أعلاه يتم تغيير التعتيم من النموذج بحيث يكون لدينا شكل شفاف مثل محدد عندما يتم النقر على القئمة القائمة SelectArea......وقمنا ايضا بتغير نمط حدود النافذة حتى نتمكن من تغيير حجم الإطار.

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

و الان يمكنك تصوير جزء من الشاشة كما فى الصور التالية :



المشروع فى المرفقات

المبرمج الطموح
الاشراف
الاشراف

تاريخ التسجيل : 18/02/2011
المساهمات : 117
النقاط : 213
التقيم : 6
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء تطبيق لتصوير سطح المكتب مع امكانية تحديد جزء لالتقاط الصورة

مُساهمة من طرف المبرمج الطموح في السبت أغسطس 24, 2013 11:53 am

المشروع
المرفقات
Screenshot 2.zip لا تتوفر على صلاحيات كافية لتحميل هذه المرفقات.(128 Ko) عدد مرات التنزيل 20

المبرمج الطموح
الاشراف
الاشراف

تاريخ التسجيل : 18/02/2011
المساهمات : 117
النقاط : 213
التقيم : 6
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء تطبيق لتصوير سطح المكتب مع امكانية تحديد جزء لالتقاط الصورة

مُساهمة من طرف end.sub في السبت أغسطس 24, 2013 12:59 pm


أشكرك اخويا ...وهذا كود لتصوير النافذة النشطة فقط على الشاشة

الرمز:
 Private Sub btnCapture_Click(ByVal sender As Object, ByVal e As EventArgs)
                  Dim graph As Graphics = Nothing
                  Try
                        Dim bmp As Bitmap = New Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)
                        graph = Graphics.FromImage(bmp)
                        graph.CopyFromScreen(0,0, 0, 0, bmp.Size)
                        SaveImage(bmp)
                  Finally
                        graph.Dispose()
                  End Try
 
 
            End Sub
 
            Private Sub SaveImage(ByVal b As Bitmap)
                  b.Save("C:\1.bmp")
          End Sub

end.sub
.....
.....

تاريخ التسجيل : 15/08/2013
المساهمات : 70
النقاط : 131
التقيم : 9
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: إنشاء تطبيق لتصوير سطح المكتب مع امكانية تحديد جزء لالتقاط الصورة

مُساهمة من طرف أحمد مناع في السبت أغسطس 24, 2013 6:45 pm

درسك رائع أخى المبرمج الطموح ....فنيك من بدرى يا اخى Very Happy

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى