![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить любой пиксель (его цвет) на экране? И что такое hdc?
Chrom © (2005-03-05 19:41:00)Как получить любой пиксель (его цвет) на экране? И что такое hdc?
То есть цвет пикселя ваще из любого окна.
Fenik (2005-03-06 22:47:00) [1]>Anatoly Podgoretsky © (05.03.05 19:56) [1]
>Canvas[i, j]
Айай :))
Дмитрий Мыльников (2005-03-06 22:08:00) [2]> Да что вы говорите... а я всю жизнь думал что свойства TScreen
> связанные с размером рабочей области имеют приставку WorkArea.
А я разве сказал через какие свойства получаются размеры рабочей области? Я сказал см. Help.
Palladin (2005-03-06 21:31:00) [3]Есть конечно. Примерно та же что и между
Var
P:Pointer;
If Integer(P)=0
и
If P=Nil
Юрий Зотов (2005-03-06 21:03:00) [4]> Defunct © (06.03.05 20:43) [10]
Не знаю (никогда не занимался такими темами, как Multiple Display Monitors, Virtual Desktops и т.п.), но не исключено, что для таких случаев между GetDC(0) и GetDC(GetDesktopWindow) все же может быть разница.
Defunct (2005-03-06 20:43:00) [5]Юрий Зотов © (06.03.05 15:57) [7]
> Не может быть!
confused...
Palladin (2005-03-06 16:34:00) [6]Конечно, как неотьмлимая часть операционной системы Windows, экран монитора имеет все... все что под руки попадется... так же свой Handle имеет подставка под монитор и коврик для мыши.
> А можно и размер рабочей области (Desktop)
Да что вы говорите... а я всю жизнь думал что свойства TScreen связанные с размером рабочей области имеют приставку WorkArea....
> Вызов GetDC(0) обычно применяется для того, чтобы потом
> через этот HDC получить текущие настройки режима отбражения
> (количество цветов, палитру и т.д.).
GetDC() - обычно применяется для получения device context, в случае 0 получения у desktop'а...
Gero (2005-03-06 15:58:00) [7]
> Handle = 0 это экран монитора.
Экран монитора имеет Handle?
Юрий Зотов (2005-03-06 15:57:00) [8]> Defunct © (05.03.05 23:08) [3]
Не может быть!
Дмитрий Мыльников (2005-03-06 15:35:00) [9]Handle = 0 это экран монитора. Вызов GetDC(0) обычно применяется для того, чтобы потом через этот HDC получить текущие настройки режима отбражения (количество цветов, палитру и т.д.).
Если мне не изменяет память, то через нео же можно рисовть в любом месте экрана, а также получать цвет любого пиксела на экране.
Да, в Delphi для работы с экраном в целом можно использовать глобальный объект Screen, в том числе оттуда можно получить текущее разрешение экрана, просто считав свойства Screen.Width и Screen.Height. А можно и размер рабочей области (Desktop) без различных панелей снизу или с боков. Более подробно см. Help по Screen.
GuAV (2005-03-05 23:54:00) [10]http://msdn.microsoft.com/library/en-us/gdi/devcons_4esj.asp
Defunct (2005-03-05 23:13:00) [11]Defunct © (05.03.05 23:08) [3]
Всмысле, что это за окно такое?
или 0 - handle несуществующего окна?
Defunct (2005-03-05 23:08:00) [12]Юрий Зотов © (05.03.05 19:57) [2]
А Вы часом не в курсе, что есть окно с Handle = 0?
GetDesktopWindow <> 0.
часто применяют GetDC( 0 ).
Юрий Зотов (2005-03-05 19:57:00) [13]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.
Anatoly Podgoretsky (2005-03-05 19:56:00) [14]Canvas[i, j]