Как узнать цвета каждого пикселя на экране - C#
Формулировка задачи:
хочу сделать типа бот для игры, нужно находить на экране красный треугольник, хочу проверять на экране цвет каждого пикселя, как это можно сделать?
Решение задачи: «Как узнать цвета каждого пикселя на экране»
textual
Листинг программы
public const int SRCCOPY = 13369376; [DllImport("gdi32.dll",EntryPoint="DeleteDC")] public static extern IntPtr DeleteDC(IntPtr hDc); [DllImport("gdi32.dll",EntryPoint="DeleteObject")] public static extern IntPtr DeleteObject(IntPtr hDc); [DllImport("gdi32.dll",EntryPoint="BitBlt")] public static extern bool BitBlt(IntPtr hdcDest,int xDest, int yDest,int wDest,int hDest,IntPtr hdcSource, int xSrc,int ySrc,int RasterOp); [DllImport ("gdi32.dll",EntryPoint="CreateCompatibleBitmap")] public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight); [DllImport ("gdi32.dll",EntryPoint="CreateCompatibleDC")] public static extern IntPtr CreateCompatibleDC(IntPtr hdc); [DllImport ("gdi32.dll",EntryPoint="SelectObject")] public static extern IntPtr SelectObject(IntPtr hdc,IntPtr bmp); public const int SM_CXSCREEN=0; public const int SM_CYSCREEN=1; [DllImport("user32.dll", EntryPoint="GetDesktopWindow")] public static extern IntPtr GetDesktopWindow(); [DllImport("user32.dll",EntryPoint="GetDC")] public static extern IntPtr GetDC(IntPtr ptr); [DllImport("user32.dll",EntryPoint="GetSystemMetrics")] public static extern int GetSystemMetrics(int abc); [DllImport("user32.dll",EntryPoint="GetWindowDC")] public static extern IntPtr GetWindowDC(Int32 ptr); [DllImport("user32.dll",EntryPoint="ReleaseDC")] public static extern IntPtr ReleaseDC(IntPtr hWnd,IntPtr hDc); public void Main() { SIZE size; IntPtr hBitmap; IntPtr hDC = GetDC(GetDesktopWindow()); IntPtr hMemDC = CreateCompatibleDC(hDC); size.cx = GetSystemMetrics(SM_CXSCREEN); size.cy = GetSystemMetrics(SM_CYSCREEN); hBitmap = CreateCompatibleBitmap(hDC, size.cx, size.cy); if (hBitmap!=IntPtr.Zero) { IntPtr hOld = (IntPtr) SelectObject(hMemDC, hBitmap); BitBlt(hMemDC, 0, 0,size.cx,size.cy, hDC, 0, 0, SRCCOPY); SelectObject(hMemDC, hOld); DeleteDC(hMemDC); ReleaseDC(GetDesktopWindow(), hDC); Bitmap bmp = System.Drawing.Image.FromHbitmap(hBitmap); DeleteObject(hBitmap); GC.Collect(); } } public struct SIZE { public int cx; public int cy; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д