Определение цвета пикселей на экране - 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("Область белая");
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д