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

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

Определение цвета в любой части экрана мышкой [D3, D5, Win95/98]


Эндрю2 ©   (2002-01-30 21:43:00) 

Кто знает, как в DELPHI при наведении мыши на любую часть экрана
в моей программе бы высвечивался код или надпись данного цвета, надо помочь одному знакомому, у которого цветоаномал.


Chris   (2002-02-01 10:05:00) [1]

> IZEN
Действительно - классная штучка.

(Для поиска. www.filesearch.ru Строка запроса = Pixie)


iZEN   (2002-02-01 01:45:00) [2]

Есть такая утилитка(махонькая): Pixie.exe


~Sergius   (2002-01-31 23:43:00) [3]

2 Walker_sw
>> зачем создавать canvas???
Просто привычка, расписывая ответ на вопрос о делфи свести к минимуму использование API. GetPixel из АПИ несомненно лучше, но если человеку дать канву для рабочей области экрана, то, может быть, оно и к лучшему (может, цветоаномал захочется исправить из делфи ;-). Канва она и есть канва - удобно.


pasha_golub   (2002-01-31 12:03:00) [4]

На www.torry.ru есть пакет компонент от ABF systems, а в нем есть пипетка. Я пробовал - отличная штука!


Walker_sw   (2002-01-31 06:09:00) [5]

зачем создавать canvas???
я делал это так:

var
Color: TColor;
//..........
procedure TfrmMain.Timer(Sender: TObject);
var
pt: TPoint;
dc: hDC;

begin
dc := GetDC (0);
GetCursorPos (pt);
Color := GetPixel(dc, pt.x, pt.y);
// Label1.Caption:=IntToHEX(color, 6);// только надо учитывать, что цвет программа берёт в формате bb gg rr, а в html"е используется наоборот, то есть rr gg bb
ReleaseDC (0, dc);
end;


~Sergius   (2002-01-31 04:59:00) [6]

Прошу прощения, после dc := GetWindowDC (0);нужно поставить:

Cnv.Handle := dc;


~Sergius   (2002-01-31 04:26:00) [7]


var col: TColor;
Cnv: TCanvas;
dc: hDC;
pt: TPoint;
begin
try
Cnv := TCanvas.Create;
dc := GetWindowDC (0);
GetCursorPos (pt);
With pt do
Col := Cnv.Pixels[x,y];
finally
ReleaseDC (0,dc);
Cnv.Free;
end;
end;


По такому принципу, короче.
Все это дело повесь, например, на таймер.


SoftOne   (2002-01-31 02:28:00) [8]

> Фе
А ты проверил "при наведении мыши на любую часть экрана"?


Фэ   (2002-01-30 22:41:00) [9]

procedure TSForm.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var col: TColor;
begin
col := Canvas.Pixels[X, Y]
end;


Наверх

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