Цвет пикселя по заданным координатам

202
19 мая 2018, 12:20

Как можно получить цвет пикселя по координатам x и y ?

Или обязательно делать скриншот ?

И можно ли делать скриншот одного пикселя.

Answer 1

Подключим для начала WinAPI, а именно BitBit:

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

Далее создадим метод, который будет возвращать цвет:

public System.Drawing.Color GetColorAt(System.Drawing.Point location)
{
    var screenPixel = new Bitmap(1, 1, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
    using (var gdest = Graphics.FromImage(screenPixel))
    {
        using (var gsrc = Graphics.FromHwnd(IntPtr.Zero))
        {
            IntPtr hSrcDc = gsrc.GetHdc();
            IntPtr hDc = gdest.GetHdc();
            BitBlt(hDc, 0, 0, 1, 1, hSrcDc, location.X, location.Y, (int)CopyPixelOperation.SourceCopy);
            gdest.ReleaseHdc();
            gsrc.ReleaseHdc();
        }
    }
    return screenPixel.GetPixel(0, 0);
}

Ну и вызываем

var color = GetColorAt(new System.Drawing.Point(0, 0));

Источник En SO.

Answer 2
Color c = (pictureBox.Image as Bitmap).GetPixel(x, y);
READ ALSO
Биндинг TextBox к одному string в WindowsForms

Биндинг TextBox к одному string в WindowsForms

Мне нужно привязать TextBox к одному stringНужно чтобы при изменении TextBox строка менялась и наоборот

226
Двойной словарь

Двойной словарь

Подскажите пожалуйста, как заполнить такой словарь?

244
List in List C# ASP.Core

List in List C# ASP.Core

Подскажите как правельно вложить List в модель с присвоением значений из модели - для формирования JsonResult в MasterDetail

234
Ошибка при использовании await

Ошибка при использовании await

Немного переделала

249