TransWikia.com

Определение цвета пикселя в координатах (получение хэндала)

Stack Overflow на русском Asked by YanShun on December 2, 2020

Задача – открываем вкладку браузера, и получаем цвет по координатам мыши (формат RGB, но получаем только R, ибо остальное нам не нужно). Цвета я получаю, координаты тоже, но программа получает цвет из какой-то другой вкладки. Тогда как узнать какой хендл окна мне нужен, чтобы программа работала корректно? Работаю через Yandex браузер. (Не понимаю, как получать цвет координат с окна)
Код:

BYTE R, G;
HWND Handle;
Handle = FindWindow(L"Yandex", NULL);
HDC hdc = GetDC(Handle);
int x, y;
POINT cursor;
while (1)
{
    if (GetCursorPos(&cursor)) //получаем координаты курсора
    {
        x = cursor.x; // инициализируем x, y координатам курсора
        y = cursor.y;
        COLORREF color = GetPixel(hdc, x, y); // получаем цвет по координатам
        R = GetRValue(color); // инициализируем цвет
        std::cout << cursor.x << " " << cursor.y << " " << (unsigned int)R << std::endl; // выводим
    }
}

One Answer

Нужно всего-лишь ScreenToClient, чтобы перевести координаты экрана, в координаты окна (GetPixel работает относительно окна)

    BYTE R, G;
    HWND Handle;
    Handle = FindWindow(L"Yandex", NULL);
    HDC hdc = GetDC(Handle);
    int x, y;
    POINT cursor;
    while (1)
    {
        if (GetCursorPos(&cursor)) //получаем координаты курсора
        {
            ScreenToClient(Handle, &cursor);
            x = cursor.x; // инициализируем x, y координатам курсора
            y = cursor.y;
            COLORREF color = GetPixel(hdc, x, y); // получаем цвет по координатам
            R = GetRValue(color); // инициализируем цвет
            std::cout << cursor.x << " " << cursor.y << " " << (unsigned int)R << std::endl; // выводим
        }
    }

попробуйте это

Answered by AndryS1 on December 2, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP