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

اذهب الى الأسفل

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

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

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

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

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

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......وقمنا ايضا بتغير نمط حدود النافذة حتى نتمكن من تغيير حجم الإطار.

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

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

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

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

المشروع فى المرفقات
المبرمج الطموح
المبرمج الطموح
الاشراف
الاشراف

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

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

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

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

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

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

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

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

مُساهمة من طرف 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
end.sub
.....
.....

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

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

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

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

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

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

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

http://egy-tech.forumegypt.net

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

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


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