Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
3 / 3 / 1
Регистрация: 20.12.2009
Сообщений: 45

Определение цвета пикселя под курсором

24.12.2011, 17:09. Показов 7986. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте,
вот так вот я получаю цвет пикселя под курсором
C++
1
2
3
4
5
int x = Mouse->CursorPos.x;
int y = Mouse->CursorPos.y;
HDC WINAPI hdc = CreateDCA("DISPLAY", NULL, NULL, NULL);
TColor color = GetPixel(hdc, x, y);
DeleteDC(hdc);
но эти x и y относительно всего экрана берутся...
а теперь представим - я запомнил цвет, допустим на выбранном месте он был красный, а потом открыл другое окно поверх этого, и пытаюсь сравнить цвета одной и той же точки - они будут разные... и тоже самое если я поверх этого окна не открывать нового, а просто сместить - в той же точке не обязательно будет один и тот же цвет...
как привязаться к координатам определённого окна, и забирать цвет даже когда окно неактивно и поверх него другое окно развернуто???
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.12.2011, 17:09
Ответы с готовыми решениями:

Цвет пикселя под курсором
Собственно, весь вопрос в названии темы. В общем виде дело обстоит так. У меня есть программа, при нажатии на кнопку диалоговое окно...

Получение цвета пикселя.
Мне нужно получить цвет пикселя из формы, лучше в формате RGB. Дело в том что в форме у меня много картинок и они перемещаются и мне надо...

Изменение цвета пикселя в opencv
Добрый вечер. Скажите, пожалуйста, есть ли какой-либо метод у opencv, который выполняет преобразование с изображением, делая его более...

7
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
24.12.2011, 20:19
когда окно неактивно и поверх него другое окно развернуто
Никак, поскольку дисплей - это не слоеный пирог, и этого окна фактически нет, и если вам кажется, что оно есть - это глюки. Ваши.

Но можно посмотреть в сторону
C++
1
2
ClientToScreen();
ScreenToClient();
1
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
25.12.2011, 00:00
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от LK Посмотреть сообщение
Никак, поскольку дисплей - это не слоеный пирог, и этого окна фактически нет
Чуть поправлю.
Картинка под новым окном, "вырезается" и сохраняется в памяти. И на это место рисуется новое окно.
Когда новое окно закрываешь или делаешь не активным, картинка считывается из памяти, и старое окно перерисовывается.
1
3 / 3 / 1
Регистрация: 20.12.2009
Сообщений: 45
27.12.2011, 15:08  [ТС]
ага, понятно, спасибо
ещё вопрос
вот так вот я нажимаю в окне кнопки:
C++
1
PostMessage(FindWindow(класс,NULL), WM_KEYDOWN, VK_F1,0);
на хожу окно по классу...
а если у меня два таких окна? названия у них одинаковые - как можно привязать программу к определённому окну?
0
 Аватар для Gremlin
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
27.12.2011, 22:11
Цитата Сообщение от Grey Посмотреть сообщение
Чуть поправлю.
Картинка под новым окном, "вырезается" и сохраняется в памяти. И на это место рисуется новое окно.
Когда новое окно закрываешь или делаешь не активным, картинка считывается из памяти, и старое окно перерисовывается.
хочу добавить, на w7, если не стоят минимальные настройки то картинки накладываются поверх (то есть имея HANDLE окна, можно спокойно читать изображение даже если это окно находится под кучей других)

Добавлено через 37 секунд
и да, получается именно ПИРОГ СЛОЕНЫЙ

Во вложении найдутся многие ответы.

Так получить пиксел
C++
1
2
3
4
5
6
//---------------------------------------------------------------------------
int wj_GetPix(HANDLE h, int x, int y) // h - хендл нужного окна
{
    return GetPixel(GetWindowDC(h), x, y); //!!!
}
//---------------------------------------------------------------------------
Миниатюры
Определение цвета пикселя под курсором  
Вложения
Тип файла: zip test321.zip (1,012.0 Кб, 123 просмотров)
2
3 / 3 / 1
Регистрация: 20.12.2009
Сообщений: 45
28.12.2011, 23:04  [ТС]
ого
так можно проворачивать только на win7?
а при максимальных настройках картинка в неактивном окне продолжает обновляться в реальном времени или как кадры в слайд шоу?
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
29.12.2011, 01:20
Gremlin, очень интересное сообщение. Могли бы более подробно об этом рассказать?
На w7 возможен клик в неактивное окно?
0
 Аватар для Gremlin
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
29.12.2011, 12:51
fawr, не при максимальных, а при стандартных (обновляется RealTime).
а вот проворчивать ток в w7 - незнаю но на ХРюшке неработает, скорее всего из за того, что в В7 можно навести мышь на панель задач и там появляется маленькое окно с изображением того, что в ОКНЕ происходит... как то так ))))

QVO, в неактивное можно, но если оно не свернуто а например в бок сдвинуто (и в некторые приложения нельзя, какая то защита или еще что то)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//---------------------------------------------------------------------------
void wj_MouseClickToWindow(HANDLE h, int x, int y, bool true_left____false_right)
{
    if(IsWindow(h))
    {
        if(true_left____false_right)
        {
            Application->ProcessMessages();
            SendMessage(h, WM_LBUTTONDOWN, NULL, MAKELPARAM(x, y));
            Application->ProcessMessages();
            SendMessage(h, WM_LBUTTONUP, NULL, MAKELPARAM(x, y));
            Application->ProcessMessages();
        }
        else
        {
            Application->ProcessMessages();
            SendMessage(h, WM_RBUTTONDOWN, NULL, MAKELPARAM(x, y));
            Application->ProcessMessages();
            SendMessage(h, WM_RBUTTONUP, NULL, MAKELPARAM(x, y));
            Application->ProcessMessages();
        }
    }
}
//---------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.12.2011, 12:51
Помогаю со студенческими работами здесь

Изменение цвета пикселя в C++ Builder 6
Буду банален - не пашет. Изображение ч\б. //--------------------------------------------------------------------------- #include...

Поиск координат пикселя определенного цвета
Здравствуйте, уважаемые участники форума! Я только начинаю программировать на С++ Builder. У меня вот такая вот проблема. Программа рисует...

Определение цвета пиксела
Доброго времени суток! Возник такой вот вопрос, как определить цвет пиксела, посмотрел в книжках нашел команду SBcolor, но никаких...

Навигация по коду: как перейти к участку кода - обработчику функции, находящейся под курсором?
Пример: 5 км кода. В нём где-то есть моя функция Calculate(). И миллион вызовов этой функции, в смысле, что поиск по слову - занятие...

Определение количества пикселов красного цвета на Image
Как определить количество пикселов красного цвета на Image? Как получить цвет каждого пиксела в цикле for и проверить его на соответствие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru