Главная страница
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.009 c
2-1305269551
ixen
2011-05-13 10:52
2011.09.04
DBGridEh и отображение содержимого BLOB поля


15-1305630519
EarthMan
2011-05-17 15:08
2011.09.04
К какой галактике относится Земля?


1-1265749109
azatsh
2010-02-09 23:58
2011.09.04
вертикальный TabControl


15-1304872083
HF-Trade
2011-05-08 20:28
2011.09.04
Капча javascript


1-1265458376
LightGreen
2010-02-06 15:12
2011.09.04
Субклассинг контрола