Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Цвета за пределами формы


Автор: kирилл 19.6.2006, 10:28
Скажите пожалуйста, можно ли определить цвет пикселя, скажем в трех пикселях левее левого нижнего угла окна программы? 

Автор: Yanis 19.6.2006, 10:46
Цитата(kирилл @  19.6.2006,  11:28 Найти цитируемый пост)
Скажите пожалуйста, можно ли определить цвет пикселя, скажем в трех пикселях левее левого нижнего угла окна программы?

Код
ShowMessage(IntToHex(GetPixel(GetDC(0), Left-3, Top+Height), 8));

т.е. использовать функцию GetPixel первый параметр - контекст устройства получаемый функцией GetDC в которой указываем дискриптор окна. В твоём случае это весь экран, поэтому и 0.

Добавлено @ 10:52 
Если делаешь "пипетку" для Windows, то возможно тебе понадобится ещё функция ColorToString. Юзать так:
Код
ShowMessage(ColorToString(GetPixel(GetDC(0), Left-3, Top+Height)));
 

Автор: kирилл 19.6.2006, 10:59
Yanis, Спасибо 

Автор: Yanis 19.6.2006, 11:02
Цитата(kирилл @ 19.6.2006,  11:59)
Yanis, Спасибо

Всегда пожалуйста smile 

Автор: kирилл 19.6.2006, 14:33
Цитата(Yanis @  19.6.2006,  10:46 Найти цитируемый пост)
контекст устройства получаемый функцией GetDC в которой указываем дискриптор окна

А как получить DC окна (если необходимо определить цвет пикселя в текущем окне) 

Автор: Snowy 19.6.2006, 14:44
Передай GetDC вместо 0 хэндл окна. 

Автор: kирилл 19.6.2006, 14:45
Это понятно, но как его получить? (т.е. получить свой DC) 

Автор: Snowy 19.6.2006, 14:51
Если нужно получить DC своей формы, то
Код
DC := GetDC(Form1.Handle);
 

Автор: kирилл 19.6.2006, 14:57
А в случае плагина (dll - файл), как получить DC вызывающего плагин? 

Автор: Snowy 19.6.2006, 15:04
Не путай треды с окнами.
Если нужно передать DC - нужно так и передавать его в функцию.
Если DC не дают - ищи хэндл окна через FindWindow и получай DC из него. 

Автор: Sunvas 20.6.2006, 00:40
Дли пикселей советую использовать getwindowdc 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)