Главная страница
    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.45 MB
Время: 0.003 c
15-1305630519
EarthMan
2011-05-17 15:08
2011.09.04
К какой галактике относится Земля?


11-1237144555
Лотос
2009-03-15 22:15
2011.09.04
$IFEND expected but $ENDIF found


15-1305318604
Юрий
2011-05-14 00:30
2011.09.04
С днем рождения ! 14 мая 2011 суббота


15-1305201437
stay unknown
2011-05-12 15:57
2011.09.04
отрисовка Items в tlistbox


1-1265825105
Дмитрий Белькевич
2010-02-10 21:05
2011.09.04
Особенность создания компонентных врапперов OLE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский