Цвет пиксела под курсором

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Ёж
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 05.11.2006 (Вс) 7:29
Откуда: Урал-опорный край державы

Цвет пиксела под курсором

Сообщение Ёж » 05.11.2006 (Вс) 7:55

Помогите, плз. Не могу получить цвет пиксела по координате курсора.
Важно: курсор может быть не над формой программы, а где угодно на экране (над другими программами).
Координаты курсора получил, а дальше...
Подозреваю, что это делается через API, но как :?:
Потуги типа:
Label1.Caption=Point(x,y)
ни к чему не приводят.
У кошки четыре ноги - вход, выход, земля и питание.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.11.2006 (Вс) 8:27

Если окно перектыто другими, то в перекрытой области цвета нет. Что правильно, в общем.
Вариант - хранить собственную копию картинки на форме и получать цвет с неё.
Или поставить autoredraw=true, но результат скорее всего будет не совсем тот, что ты ожидаешь.

А координаты курсора, ScreenToClient сначала, и потом ScaleX/ScaleY в текущую систему координат формы.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

NIC
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 175
Зарегистрирован: 26.04.2005 (Вт) 4:50

Re: Цвет пиксела под курсором

Сообщение NIC » 05.11.2006 (Вс) 9:12

Ёж писал(а):Помогите, плз. Не могу получить цвет пиксела по координате курсора.
Важно: курсор может быть не над формой программы, а где угодно на экране (над другими программами).
Координаты курсора получил, а дальше...
Подозреваю, что это делается через API, но как :?:
Потуги типа:
Label1.Caption=Point(x,y)
ни к чему не приводят.


Это было уже...
А цвет пикселя можно получить при API

GetPixel(GetDC(0), X, Y)

Насчёт курсора тоже только API

GetCursorPos

Ёж
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 05.11.2006 (Вс) 7:29
Откуда: Урал-опорный край державы

Re: Цвет пиксела под курсором

Сообщение Ёж » 05.11.2006 (Вс) 15:29

А было это где? Ссылку дашь? На данном форуме я не нашёл.
NIC писал(а):Насчёт курсора тоже только API
GetCursorPos

Это я уже знаю, а вот на счёт:
NIC писал(а):GetPixel(GetDC(0), X, Y)

как её объявить (синтаксис), я так и этак пробовал, но видимо что-то не так делаю.
А как быть с параметрами (ByVal hDC As Long) рекомендованными в API Viewer'е. Я такой переменной (или константы) не знаю, как её пользовать тоже.
У кошки четыре ноги - вход, выход, земля и питание.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 06.11.2006 (Пн) 7:06

Объявление должно быть таким:

Код: Выделить всё
Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long



Вызывается так:

Код: Выделить всё
Dim clr As Long
clr = GetPixel(GetDC(0), X, Y)


получаем цвет пикскля с координатами X, Y.

Насчет hDC, hDC - это описатель контекста устройства, при помощи GetDC(0) получаем описатель контекста устройства всего экрана.
Весь мир матрица, а мы в нем потоки байтов!

Ёж
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 05.11.2006 (Вс) 7:29
Откуда: Урал-опорный край державы

Сообщение Ёж » 06.11.2006 (Пн) 13:20

:D !Viper!, ты - !Super! :D

:D Нет, ну конечно же всем огромное спасибо :!: :D
У кошки четыре ноги - вход, выход, земля и питание.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Majestic-12 [Bot] и гости: 41

    TopList