Форум: "Начинающим";
Текущий архив: 2011.11.13;
Скачать: [xml.tar.bz2];
ВнизФункция определения цвета пикселя Найти похожие ветки
← →
alexdn © (2011-07-20 19:53) [0]Подскажите плиз как описать переменную цвета, т.е. это реал, boolean? что там выдаётся..?
CP_Color:=GetPixel(hdc, foo.X, foo.Y);
← →
Юрий Зотов © (2011-07-20 20:02) [1]Вообще-то, все это есть в MSDN и даже в справке по WinAPI, идущей вместе с Delphi.
The return value is the RGB value of the pixel. If the pixel is outside of the current clipping region, the return value is CLR_INVALID.
COLORREF RGB(
BYTE byRed, // red component of color
BYTE byGreen, // green component of color
BYTE byBlue // blue component of color
);
← →
alexdn © (2011-07-20 20:13) [2]вот
procedure TForm2.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
foo: TPoint;
hdc,CP_Color:BYTE; {вот тут особенно непонятно..!}
begin
GetCursorPos(foo);
ShowMessage("(" + IntToStr(foo.X) + " ," + IntToStr(foo.Y) + ")");
hdc:=CreateDCA("DISPLAY",NULL,NULL,NULL);
CP_Color:=GetPixel(hdc, {Cursor_Position.x}foo.X, {Cursor_Position.y}foo.Y);
end;
там конечно переменные как попало описаны.. и что там нужно?..
← →
Юрий Зотов © (2011-07-20 20:29) [3]hdc: THandle;
CP_Color: DWORD;
← →
Юрий Зотов © (2011-07-20 20:34) [4]По сути, обе эти переменные - беззнаковое 4-х байтововое целое.
Цвет в RGB представляется так:
$00BBGGRR,
где каждая буква R, G или B обозначает 16-ричную цифру. Поэтому здесь младший байт - уровень красного, следующий байт - уровень зеленого, следующий байт - уровень синего.
← →
alexdn © (2011-07-20 20:37) [5]спасибо), вот так было сделано:
foo,p: TPoint;
C:TCanvas;
hP:Cardinal;
begin
C:=TCanvas.Create;
GetCursorPos(p);
C.Handle:=GetDC(0);
hP:=GetPixel(GetDC(0),p.X,p.Y);
ShowMessage("(" + ColorToString(hP) + ")");
хотя ещё подумаю, может вернусь к msdn..
← →
Юрий Зотов © (2011-07-20 20:50) [6]> alexdn © (20.07.11 20:37) [5]
1. После того, как объект TCanvas стал не нужен, его надо уничтожить, иначе будет утечка памяти.
2. Здесь этот объект вообще ни к чему, используйте сразу HDC.
3. В конце нужно вызвать ReleaseDC, иначе будет утечка ресурсов.
var
P: TPoint;
DC: THandle;
Color: DWORD;
begin
GetCursorPos(P);
DC := GetDC(0);
try
Color := GetPixel(DC, P.X, P.Y);
...
finally
ReleaseDC(0, DC)
end
end;
← →
Омлет © (2011-07-21 08:52) [7]> что там выдаётся..?
TColorRef
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.11.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c