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

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

24.12.2011, 17:09. Показов 8006. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru