2010-11-17 7 views
1

Мне нужно определить цвет пикселя на моем мониторе. Как получить его на координате (x, y) в C#?Как определить цвет пикселя на мониторе в C#?

+2

дубликат, см .: http: //stackoverflow.com/questions/1483928/how-to-read-the-color-of-a-screen-pixel – Bolu

+0

Вам не нужен C#. Просто используйте увеличительное стекло :) – thomaspaulb

ответ

5

Используйте Graphics.CopyFromScreen скопировать 1x1 растровое, Bitmap.GetPixel(), чтобы получить его цвет.

+0

Спасибо. Это похоже на простое решение. –

1

Во-первых, захватите экран.

Rectangle screenRegion = Screen.AllScreens[0].Bounds; 
Bitmap screen = new Bitmap(screenRegion.Width, screenRegion.Height, PixelFormat.Format32bppArgb); 

Graphics screenGraphics = Graphics.FromImage(screenBitmap); 
screenGraphics.CopyFromScreen(screenRegion.Left, screenRegion.Top, 0, 0, screenRegion.Size); 

Затем get the pixel из растрового изображения.

+0

Обратите внимание, что он работает только с основным монитором. Если вам нужно захватить пиксель с других мониторов, вам нужно изменить нулевой индекс в первой строке кода. –

2

первого импорта этих Dlls

[DllImport("user32.dll")]  
    static extern IntPtr GetDC(IntPtr hwnd); 

    [DllImport("user32.dll")] 
    static extern Int32 ReleaseDC(IntPtr hwnd, IntPtr hdc); 

    [DllImport("gdi32.dll")] 
    static extern uint GetPixel(IntPtr hdc, int nXPos, int nYPos); 

Затем написать этот метод GetPixelColor (х, у);

 static public System.Drawing.Color GetPixelColor(int x, int y) 
     { 
     IntPtr hdc = GetDC(IntPtr.Zero); 
     uint pixel = GetPixel(hdc, x, y); 
     ReleaseDC(IntPtr.Zero, hdc); 
     Color color = Color.FromArgb((int)(pixel & 0x000000FF), 
        (int)(pixel & 0x0000FF00) >> 8, 
        (int)(pixel & 0x00FF0000) >> 16); 
     return color; 
     } 

Вызвать метод Цвет clr = GetPixelcolor (50,50);

+0

Ничего себе. Спасибо. Это именно то, что я искал. –

Смежные вопросы