Показать сообщение отдельно
  #5  
Старый 15.10.2011, 14:04
unity unity вне форума
Прохожий
 
Регистрация: 14.07.2011
Сообщения: 43
Репутация: -2279
По умолчанию

ну получилось вот так (просто скопировал ваш код в свой)

Код:
procedure TForm1.zdc1tmrTimer(Sender: TObject);
begin
 bmp := TBitmap.Create;
  bmp.Width  := Screen.Width;
  bmp.Height := Screen.Height;
  bmp.PixelFormat := pf24bit;
GetCursorPos(pos);
DC:=GetDC(0);
BitBlt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DC, 0, 0, SRCCOPY);
colzdc1:= bmp.Canvas.Pixels [pos.x,pos.y];
ReleaseDC(0,DC);
shp1.brush.Color:=colzdc1;

но из за того что нужен постоянный мониторинг, и етовсе в таймере
за сек 30 работы проги съедаеться 2 гига оперативы

наскока я понял скриншот делаеться всего экрана
что затратно, мне будет достаточно скриншота в 1 пиксель
за это наверно отвечает Screen.Width, Screen.Height им надо значение 1

а как заставить делать этот скриншот в определеном месте экрана?
все нашел за это отвечают BitBlt(bmp.Canvas.Handle, 0, 0,Screen.Width, Screen.Height, DC, 0, 0, SRCCOPY);
красные нули

вообщем получилось чтото такое:
Код:
procedure TForm1.zdc1tmrTimer(Sender: TObject);
begin
 bmp := TBitmap.Create;
 bmp.Width  := 1;
  bmp.Height := 1;
 bmp.PixelFormat := pf24bit;
GetCursorPos(pos);
DC:=GetDC(0);
BitBlt(bmp.Canvas.Handle, 0,0, 1, 1, DC, Pos.x,Pos.y, SRCCOPY);
colzdc1:= bmp.Canvas.Pixels [0,0];
ReleaseDC(0,DC);
shp1.brush.Color:=colzdc1;
вроде оперативку нетак хавает )

всеравно правда неработает в полноэкранном режиме наверно там както
спецом сделали чтоб цвет неопределялся (или это из за directx )

какими еще способами можно определить цвет пикселя?

так установил опытным путем что цвет который узнает програма это цвет под полоской очков жизней
очки жизни и прочие показатели героя в блоке который похож на окно в винде, внутри игры его можно свободно перемещать
насколько я понял мне надо его хвид узнать (если он у него есть, гдето читал что даже у флеш анимации в браузере хвид есть свой) и сделать вот так: DC:=GetDC(hwnd)

вот а как узнать этот хвид (например хвид окна игры я узнаю наведением мыши на облость окна, и у меня есть своя мини прога которая показывает
хвид того что под курсором)
Ответить с цитированием