Определение цвета пикселей на экране - C#
Формулировка задачи:
Тут миллион тем уж создано по этому вопросу но у меня не работает.
Нужно определить прямоугольник из пикселей размером 3х2 цвет в определенном месте экрана например в точке 400х500. А именно зеленый цвет, если все пиксели зеленые то делать действие. Ресурсоемко сильно получается если каждые 0.1 секунды делать скриншот экрана и проверять там цвет. Не могли бы вы предложить какието наброски кода?
Это обязательно в коде должно быть?
И я нашел одну ссылку про это, но там всё сложно описано GetPixel.html
[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);
Решение задачи: «Определение цвета пикселей на экране»
textual
Листинг программы
[DllImport("user32.dll")] private static extern IntPtr GetDC(IntPtr hwnd); [DllImport("user32.dll")] private static extern int ReleaseDC(IntPtr hwnd, IntPtr hDC); [DllImport("gdi32.dll")] private static extern uint GetPixel(IntPtr hDC, int x, int y); public static void GetPixelsColor(int x, int y, out uint[,] pixels) { IntPtr hDC = GetDC(IntPtr.Zero); pixels = new uint[3, 2]; for (int i = 0; i < 3; i++) for (int j = 0; j < 2; j++) pixels[i, j] = GetPixel(hDC, x + i, y + j); ReleaseDC(IntPtr.Zero, hDC); } public static void GetColorFromUint(uint color, out byte R, out byte G, out byte B) { R = (byte)(color & 0x000000FF); G = (byte)((color & 0x0000FF00) >> 8); B = (byte)((color & 0x00FF0000) >> 16); } private void button1_Click(object sender, EventArgs e) { uint[,] pixels = null; GetPixelsColor(1100, 650, out pixels); bool white = true; for (int i = 0; i < 3; i++) for (int j = 0; j < 2; j++) { byte R, G, B; GetColorFromUint(pixels[i, j], out R, out G, out B); if (R != 246 || G != 246 || B != 246) white = false; } if (white) MessageBox.Show("Область белая"); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д