گرفتن تصویر از صفحه نمایش با سی شارپ

سه شنبه 29 اردیبهشت 1394

در این مقاله میخواهیم از صفحه مانیتور خود یک تصویر گرفته و آنرا ذخیره کنیم همانطور که میدانید در ویندوز شما این عمل را با فشردن دکمه Pause روی کیبورد انجام میدهید ما میخواهیم این عمل را توسط سی شارپ در کنسول انجام دهیم

گرفتن تصویر از صفحه نمایش با سی شارپ

گرفتن تصویر از صفحه نمایش

در این مقاله میخواهیم از صفحه مانیتور خود یک تصویر گرفته و آنرا ذخیره کنیم همانطور که میدانید در ویندوز شما این عمل را با فشردن دکمه Pause روی کیبورد انجام میدهید ما میخواهیم این عمل را توسط سی شارپ انجام دهیم

هدف ما ذخیره تصویر از صفحه نمایش می باشد هر بار که برنامه اجرا میشود تصویر درون پوشه Document ذخیره میشود

خوب کار بسیار ساده می باشد درابتدا فضا نام های زیر را به پروژه خود اضافه میکنیم:

using System.Drawing;  
using System.IO;  
using System.Windows.Forms; 

System.Drawing

این فضای نام برای گرافیک ، Bitmap  و غیره استفاده میشود و برای استفاده از موارد گفته شده بدون این فضای نام امکان پذیر نمی باشد.

System.IO

این فضای نام برای کار با فایل ها استفاده میشود که دراینجا برای ذخیره فایل از آن استفاده میکنیم. همچنین این فضای نام برای دستورات Input/output می باشد. ذخیره و حذف فایل ها درون سیستم توسط این فضای نام انجام میشود.

در اینجا با یک برنامه ساده کنسول  از صفحه نمایش خود یک تصویر به فرمت PNG گرفته و ذخیره میکنیم.

کدزیر اینکار را برای ما انجام میدهد:

            Console.WriteLine("Starting the process...");
            Console.WriteLine();
            Bitmap memoryImage;
            memoryImage = new Bitmap(1000, 900);
            Size s = new Size(memoryImage.Width, memoryImage.Height);
            Graphics memoryGraphics = Graphics.FromImage(memoryImage);
            memoryGraphics.CopyFromScreen(0, 0, 0, 0, s);
            string fileName = string.Format(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) +
                      @"\Screenshot" + "_" +
                      DateTime.Now.ToString("(dd_MMMM_hh_mm_ss_tt)") + ".png");
            memoryImage.Save(fileName);
            Console.WriteLine("Picture has been saved...");
            Program.pause();   

کد بالا بسیار ساده میباشد با کمی دقت میبینید که عمل گرفتن تصویر توسط شی ساخته شده از Graphics توسط متد CopyFromScreen انجام میشود و تصویر در اندازه 1000 در 900 ذخیره میشود.

یک شی از Bitmap ساختم و اندازه تصویر را به آن دادم و یک شی از کلاس Size ساختم با ابعاد بالا و همانطور که میبینید S را در متد CopyFromScreen استفاده کردم.

در انتهای نام فایل تاریخ و ساعت جاری سیستم را اضافه کرده و سپس پسوند تصویر و برای محل ذخیره سازی آن از کلاس Environment استفاده کردم  چون پوشه Document درون SpecialFolder وجود دارد بعد از انجام این تنظیمات متد Save از Bitmap را فراخوانی میکنیم.

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 3k بازدید
  • 0 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

تاکنون هیچ کاربری از این پست تشکر نکرده است

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید