Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

Как получить любой пиксель (его цвет) на экране? И что такое hdc?   Найти похожие ветки 

 
Chrom   (2005-03-05 19:41) [0]

Как получить любой пиксель (его цвет) на экране? И что такое hdc?
То есть цвет пикселя ваще из любого окна.


 
Anatoly Podgoretsky ©   (2005-03-05 19:56) [1]

Canvas[i, j]


 
Юрий Зотов ©   (2005-03-05 19:57) [2]

function GetScreenPointColor(X, Y: integer): TColor;
var
 DC: HDC;
begin
 DC := GetDC(GetDesktopWindow);
 try
   Result := GetPixel(DC, X, Y)
 finally
   ReleaseDC(GetDesktopWindow, DC)
 end
end;

HDC - хэндл контекста устройства. Что это такое - долго рассказывать, смотрите концепции графики Windows.


 
Defunct ©   (2005-03-05 23:08) [3]

Юрий Зотов ©   (05.03.05 19:57) [2]

А Вы часом не в курсе, что есть окно с Handle = 0?

GetDesktopWindow <> 0.
часто применяют GetDC( 0 ).


 
Defunct ©   (2005-03-05 23:13) [4]

Defunct ©   (05.03.05 23:08) [3]

Всмысле, что это за окно такое?
или 0 - handle несуществующего окна?


 
GuAV ©   (2005-03-05 23:54) [5]

http://msdn.microsoft.com/library/en-us/gdi/devcons_4esj.asp


 
Дмитрий Мыльников   (2005-03-06 15:35) [6]

Handle = 0  это экран монитора. Вызов GetDC(0) обычно применяется для того, чтобы потом через этот HDC получить текущие настройки режима отбражения (количество цветов, палитру и т.д.).
Если мне не изменяет память, то через нео же можно рисовть в любом месте экрана, а также получать цвет любого пиксела на экране.

Да, в Delphi для работы с экраном в целом можно использовать глобальный объект Screen, в том числе оттуда можно получить текущее разрешение экрана, просто считав свойства Screen.Width и Screen.Height. А можно и размер рабочей области (Desktop) без различных панелей снизу или с боков. Более подробно см. Help по Screen.


 
Юрий Зотов ©   (2005-03-06 15:57) [7]

> Defunct ©   (05.03.05 23:08) [3]

Не может быть!


 
Gero ©   (2005-03-06 15:58) [8]


> Handle = 0  это экран монитора.

Экран монитора имеет Handle?


 
Palladin ©   (2005-03-06 16:34) [9]

Конечно, как неотьмлимая часть операционной системы Windows, экран монитора имеет все... все что под руки попадется... так же свой Handle имеет подставка под монитор и коврик для мыши.


> А можно и размер рабочей области (Desktop)

Да что вы говорите... а я всю жизнь думал что свойства TScreen связанные с размером рабочей области имеют приставку WorkArea....


> Вызов GetDC(0) обычно применяется для того, чтобы потом
> через этот HDC получить текущие настройки режима отбражения
> (количество цветов, палитру и т.д.).

GetDC() - обычно применяется для получения device context, в случае 0 получения у desktop"а...


 
Defunct ©   (2005-03-06 20:43) [10]

Юрий Зотов ©   (06.03.05 15:57) [7]
> Не может быть!

confused...


 
Юрий Зотов ©   (2005-03-06 21:03) [11]

> Defunct ©   (06.03.05 20:43) [10]

Не знаю (никогда не занимался такими темами, как Multiple Display Monitors, Virtual Desktops и т.п.), но не исключено, что для таких случаев между GetDC(0) и GetDC(GetDesktopWindow) все же может быть разница.


 
Palladin ©   (2005-03-06 21:31) [12]

Есть конечно. Примерно та же что и между

Var
P:Pointer;

If Integer(P)=0
и
If P=Nil


 
Дмитрий Мыльников   (2005-03-06 22:08) [13]

> Да что вы говорите... а я всю жизнь думал что свойства TScreen
> связанные с размером рабочей области имеют приставку WorkArea.
А я разве сказал через какие свойства получаются размеры рабочей области? Я сказал см. Help.


 
Fenik   (2005-03-06 22:47) [14]

>Anatoly Podgoretsky ©  (05.03.05 19:56) [1]
>Canvas[i, j]

Айай :))



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.057 c
3-1108749618
Urvin
2005-02-18 21:00
2005.03.20
Поймать отключение сервера


6-1106049675
WandR
2005-01-18 15:01
2005.03.20
IdMappedPortUDP


14-1109578444
Ev_genus
2005-02-28 11:14
2005.03.20
Вопрос фанатам и долгожителям


4-1107780857
ANB
2005-02-07 15:54
2005.03.20
Сообщения для Control


3-1108790471
DelphiN!
2005-02-19 08:21
2005.03.20
Как работать с SQL не "визуально" ?