Главная страница
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.01 c
15-1303279486
Inovet
2011-04-20 10:04
2011.09.04
Фильм "Generation П" кто-нибудь уже видел?


2-1305708984
test2
2011-05-18 12:56
2011.09.04
округление


15-1302113906
Иксик
2011-04-06 22:18
2011.09.04
iPad 2


2-1305694815
samalex2504
2011-05-18 09:00
2011.09.04
Ошибка конвертирования данных из Excel в тип Data


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