Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.09.04;
Скачать: CL | DM;

Вниз

максимально быстро считать цвет пикселя с экрана   Найти похожие ветки 

 
Azat   (2008-07-18 10:23) [0]

Вопрос как максимально быстро считать цвет пикселя с экрана;
делал я примерно так:
BitBlt(Bitmap.Canvas.Handle, 0, 0,1024, 768, GetDC(0), 0, 0, SRCCOPY);
p:=bitmap.Canvas.Pixels[200,200];

Заранее спасибо.


 
han_malign ©   (2008-07-18 11:42) [1]

GetPixel?


 
v   (2008-07-18 13:07) [2]

1) почему бы не блитить только один нужный пиксел в битмап 1х1?
2) после GetDC хорошо бы сделать ReleaseDC
3) если у битмапа формат pf32bit, то значение пиксела из битмапа можно брать напрямую через  ScanLine, ток нужно будет поменять порядок с BGR на RGB. Прямой доступ быстрее чем Canvas.Pixels.

bmp := TBitmap.Create;
bmp.Width := 1; bmp.Height := 1; bmp.PixelFormat := pf32bit;

...
var c: TColor; dc: cardinal; p: TPoint;
begin
 GetCursorPos(p);
 dc := GetDC(0);
 BitBlt(bmp.Canvas.Handle,0,0,1,1,dc,p.x,p.y,SRCCOPY);
 releasedc(0,dc);
 c := pinteger(bmp.Scanline[0])^;
 c := ((c and $FF) shl 16) or (c and $FF00) or ((c shr 16) and $FF);
 <делаем с цветом "с" че хотим>
end;


 
v   (2008-07-18 13:18) [3]

ой, забыл добавить, - в этом примере сдирается цвет пиксела под курсором


 
v   (2008-07-18 13:58) [4]

елки-палки, когда же я проснусь ;-) конечно GetPixel. прошу прощения. ток про ReleaseDC не забываем...


 
Омлет   (2008-07-18 14:49) [5]

> Вопрос как максимально быстро считать цвет пикселя с экрана;

Если нужно только один пиксель, то лучше не использовать BitBlt, а делать сразу GetPixel c дескриптора экрана.

> v   (18.07.08 13:07) [2]
> 3) если у битмапа формат pf32bit, то значение пиксела из битмапа можно брать напрямую через  ScanLine

При любом формате лучше юзать ScanLine. А еще лучше http://www.delphimaster.ru/articles/pixels/index.html



Страницы: 1 вся ветка

Текущий архив: 2011.09.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.008 c
15-1303279486
Inovet
2011-04-20 10:04
2011.09.04
Фильм "Generation П" кто-нибудь уже видел?


15-1305138754
NailMan
2011-05-11 22:32
2011.09.04
Ну наконец то начало что то получаться


15-1305547178
TUser
2011-05-16 15:59
2011.09.04
Кому двигатель?


2-1305724542
Соня
2011-05-18 17:15
2011.09.04
Insert into БД SQL Server с помощью ADOQuery.SQL


8-1215855784
AlexanderMS
2008-07-12 13:43
2011.09.04
Программа вылетает на команде IGraphBuilder.RenderFile