17-10-12, 08:27 PM
كاتب الموضوع : 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 ();
}
}
كما نري الكود في غاية البساطه
;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]
كود :
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");
انه برنامج بسيط جدا , ولكنه يوفر الكثير من الجهد