تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تصوير شاشة الكمبيوتر في سطور قليلة و بسرعة
#4
تصوير شاشة الكمبيوتر بيحتاج اننا نخلق صورة بأبعاد تساوي ابعاد شاشة الكمبيوتر

مثلا لو نظرت الي الكود التالي  هو بسيط جدا و نحن هنا لا نقوم بتصوير شاشة الكمبيوتر نهائي
نحن فقط نخلق الصورة و نحفظها و هنا ستلاحظ ان و في حالة عدم وجود لون الجرافكس الموجودة في الدوت نت ستقوم بملأ الصورة باللون الأسود

PHP كود :
       Dim rect As Rectangle Screen.PrimaryScreen.Bounds
        Dim scrBitmap 
As Bitmap = New Bitmap(rect.Widthrect.Size.Height)
 
       scrBitmap.Save((".\" & DateTime.Now.ToFileTimeUtc & ".jpg"), Imaging.ImageFormat.Jpeg) 

الكود التالي مشابه تماما للكود أعلاه و فقط عليك ان تلاحظ انني ملأت الصورة باللون الشفاف حاول تغير اللون و لتري ما سيحدث معك


PHP كود :
       Dim rect As Rectangle Screen.PrimaryScreen.Bounds
        Dim scrBitmap 
As Bitmap = New Bitmap(rect.Widthrect.Size.Height)
 
       Using g As Graphics Graphics.FromImage(scrBitmap)
 
           g.Clear(Color.Transparent)
 
       End Using
        scrBitmap
.Save((".\" & DateTime.Now.ToFileTimeUtc & ".jpg"), Imaging.ImageFormat.Jpeg) 


عموما كل الطرق ستؤدي لنفس الغرض
الفكرة فقط في الكود الأول هو الحصول علي اللون الشائع في شاشات الكمبيوتر بشكل عام
و نملأ به الصورة

ثم نقوم بتصوير الشاشة و هذا ما يمكنك ان تطلق عليه MaskedImage
أي أن الصورة الظاهرة لكي تراها العين لها خلفية بلون ثابت كأنهم صورة مرسومة فوق صورة
وهذا الأمر له علاقة بشفافية الصور بشكل عام أيضا له علاقة بالفورم و الكونترول خصوصا و ان الفورم أو كل الكونترول يتم رسمهم علي صورة أصلا

عموما الكود يمكن كتابته بصور اخري كالتالي


PHP كود :
       Dim rect As Rectangle Screen.PrimaryScreen.Bounds
        Using scrBitmap 
As Bitmap = New Bitmap(rect.Widthrect.Size.Height)
 
           Using g As Graphics Graphics.FromImage(scrBitmap)
 
               g.CopyFromScreen(rect.Locationrect.Locationrect.SizeCopyPixelOperation.SourceCopy)
 
               scrBitmap.Save((".\" & DateTime.Now.ToFileTimeUtc & ".jpg"), Imaging.ImageFormat.Jpeg)
            End Using
        End Using 

أ و كالتالي


PHP كود :
       Dim rect As Rectangle Screen.PrimaryScreen.Bounds
        Using scrBitmap 
As Bitmap Image.FromHbitmap(New Bitmap(rect.Widthrect.Size.Height).GetHbitmap())
 
           Using g As Graphics Graphics.FromImage(scrBitmap)
 
               g.CopyFromScreen(rect.Locationrect.Locationrect.SizeCopyPixelOperation.SourceCopy)
 
               scrBitmap.Save((".\" & DateTime.Now.ToFileTimeUtc & ".jpg"), Imaging.ImageFormat.Jpeg)
            End Using
        End Using 

حاول توقف السطر الخاص بتصوير الشاشة و لتري ماذا سيحدث معك كالتالي

PHP كود :
       Dim rect As Rectangle Screen.PrimaryScreen.Bounds
        Using scrBitmap 
As Bitmap Image.FromHbitmap(New Bitmap(rect.Widthrect.Size.Height).GetHbitmap())
 
           'Using g As Graphics = Graphics.FromImage(scrBitmap)
            '
g.CopyFromScreen(rect.Locationrect.Locationrect.SizeCopyPixelOperation.SourceCopy)
 
           scrBitmap.Save((".\" & DateTime.Now.ToFileTimeUtc & ".jpg"), Imaging.ImageFormat.Jpeg)
            'End Using
        End Using 
لم اعلن عن متغير حتي يتم التخلص من الصورة مباشرة بعد تنفيذ الأمر من أجل عملية Disposing  للصورة التي تم تخليقها و ليس للصورة التي يتم حفظها
الرد }}}


الردود في هذا الموضوع
RE: تصوير شاشة الكمبيوتر في سطور قليلة و بسرعة - بواسطة silverlight - 22-12-16, 09:01 PM


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


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