التنبيهات التالية ظهرت :
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 864 - File: showthread.php PHP 7.4.33 (Linux)
File Line Function
/showthread.php 864 errorHandler->error



تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
نسخ صورة النافذه المفتوحه Screen capture
#1
كاتب الموضوع : Mohamed Gamal El-Din

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


يتعرض الكثير منا لبعض المواقف الغريبه و النادره التي تحدث بوسطة الحاسب الالي , والكثير يحب ان يحتفظ بالصوره التي تدل علي هذا الموقف
عن طريق النقر علي زرار pintScreen ثم الذهاب الي قائمة ابدا <<(start)كل البرامج <<(all programs) الملاحق <(accessories) الرسام (Paint)
ثم الضغط علي لصق (paste) وهنا ستظهر لك الصوره التتي قد اخذتها للنافذه المقتوحه .
ثم تذهب الي قائمه ملف لحفظ هذه الصوره. يالها من عملية شاقه

اليس بإمكاننا ان نبرمج برنامج يسهل علينا كل هذه الخطوات في طغطة زر واحده ؟

اليكم الطريقه

هذه الوظيفه (function) قد تمت اضافتها في الفيجوال استديو 2005 وتسمي CopyFromScreen
تقم هذه الفانكشن بأخد صوره من النافذه المفتوحه حالياُ وتتركها في ال Clipboard حتي نقوم بلصقها في صوره لكي يتم حفظها.

الكود


كود :
Private Image Captured_image;
Private Graphics captured_graph;
private void button1_Click (object sender, EventArgs e)
{
this.hide ();
If (saveFileDialog1.ShowDialog () == DialogResult.OK))
{
this.hide ();
[align=left]Captured_image = new Bitmap (Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb
<br>
);
[/align]
captured_graph = Graphics.FromImage (Captured_image);
captured_graph.CopyFromScreen (Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
Captured_image.Save (saveFileDialog1.FileName+"."+"Jpeg");
this.show ();
}
}
[SIZE=4]شرح الكود[/SIZE]


كما نري الكود في غاية البساطه

;Private Image Captured_image
هذا كائن ( object) من نوع صوره لكي يتم حفظ الصوره داخله

;()this.hide
وهذا السطر لكي بقوم بإخفاء البرنامج حتي لا يظهر في الصوره

كود :
[align=left]Captured_image = new Bitmap (Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);[/align]

وهذا السطر لكي نقوم بتهيئة كائن الصوره بتحديد طول و عرض الصوره و نوع البيكسلز المطلوب
وهنا قد وضعنا الطول و العرض للشاشه كاملين و استخدمنا Format32bppArg للألوان.

كود :
[align=left]captured_graph = Graphics.FromImage (Captured_image); [/align]
في هذا السطر قد هيئنا كائن الجرفيكس لكي ياخذ البيانت عن طريق صوره وفي ال Parameters الصوره الي سنقوم بحفظها

كود :
captured_graph.CopyFromScreen (Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);

اما هذا السطر فيعتبر الخطوه الاساسيه فهو المسئول عن اهذ صوره من النافذه المفتوحه ووضعها في كائن الجرافيكس
ويأخذ الاحداثيات من الشاشه ك parameters وكذلك الحجم, ما عن zero , zero فهما يرمزان الي المكان المقصود للمحور X and Y

كود :
Captured_image.Save (saveFileDialog1.FileName+"."+"Jpeg");
هذا هو السطر الاخير الذي قوم بحفظ الصوره في المكان الذي تريده

انه برنامج بسيط جدا , ولكنه يوفر الكثير من الجهد Smile
}}}
تم الشكر بواسطة:


الردود في هذا الموضوع
نسخ صورة النافذه المفتوحه Screen capture - بواسطة Raggi Tech - 17-10-12, 08:27 PM


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


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