Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
ВнизКак получить любой пиксель (его цвет) на экране? И что такое 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.031 c