Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить любой пиксель (его цвет) на экране? И что такое 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]


Наверх

Титульная страница Поиск, карта сайта Написать письмо