در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

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

در این نکته قصد دارم تا نحوه گرفتن عکس از صفحه نمایش را خدمت دوستان آموزش بدم. در حقیقت این مطلب یک نمونه کد آماده است که بوسیله PInvoke و استفاده از توابع Windows به شما امکان تهیه عکس از صفحه نمایش را می دهد. برای اینکار ابتدا کلاسی به صورت زیر تعریف می کنیم:

public class API
{
    [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
    public static extern IntPtr GetDC(IntPtr hWnd);

    [DllImport("user32.dll", ExactSpelling = true)]
    public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDC);

    [DllImport("gdi32.dll", ExactSpelling = true)]
    public static extern IntPtr BitBlt(IntPtr hDestDC, int x, int y, int nWidth, int nHeight, IntPtr hSrcDC, int xSrc, int ySrc, int dwRop);

    [DllImport("user32.dll", EntryPoint = "GetDesktopWindow")]
    public static extern IntPtr GetDesktopWindow();
}

کاری که کلاس بالا انجام می دهد Import کردن یکسری API ها از فایل های user32.dll و gdi32.dll است که برای گرفتن عکس از صفحه نمایش به آن ها نیاز داریم. در ادامه کلاس زیر را تعریف می کنیم که یک متد static با نام Take در آن تعریف شده. این متد از صفحه نمایش یک تصویر گرفته و به صورت شئ ای از نوع Bitmap بر میگرداند:

internal class ScreenShot
{
    public static Bitmap Take()
    {
        int screenWidth = Screen.PrimaryScreen.Bounds.Width;
        int screenHeight = Screen.PrimaryScreen.Bounds.Height;

        Bitmap screenBmp = new Bitmap(screenWidth, screenHeight);
        Graphics g = Graphics.FromImage(screenBmp);

        IntPtr dc1 = API.GetDC(API.GetDesktopWindow());
        IntPtr dc2 = g.GetHdc();

        //Main drawing, copies the screen to the bitmap
        //last number is the copy constant
        API.BitBlt(dc2, 0, 0, screenWidth, screenHeight, dc1, 0, 0, 13369376);

        //Clean up
        API.ReleaseDC(API.GetDesktopWindow(), dc1);
        g.ReleaseHdc(dc2);
        g.Dispose();

        return screenBmp;
    }
}

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

var shot = ScreenShot.Take();
shot.Save("D:\\scshot.bmp");

کد بالا یک تصویر از صفحه نمایش ایجاد کرده و با نام scshot.bmp ذخیره می کند. دقت کنید که فضاهای نام System.Drawing و System.Runtime.InteropServices و System.Windows.Forms در کد بالا استفاده شده اند. امیدوارم که این مطلب مورد توجه شما قرار گرفته باشد. ITPRO باشید

نویسنده: حسین احمدی

منبع: ITPRO

#آموزش_سی_شارپ #گرافیک_در_سی_شارپ #نکات_سی_شارپ #گرفتن_عکس_از_صفحه_نمایش_در_سی_شارپ #کار_با_عکس_ها_در_سی_شارپ #عکس_برداری_از_صفحه_نمایش
1 نظر
عزیزاله بندزن

خدا قوت مهندس جان مثل همیشه کامل

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....