Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2011, 10:41   #1
Federal
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 77
Вопрос Скрин Код пикселя

Всем Привет!!!
В моей программе каждую секунду нужно брать информацию о коде цвета пикселя в координате 100,20-первый пиксель 101,20-второй пиксель
И уже в зависимости от кода цвета пикселя пограмма определяет дальнейший ход действий
Не знаю как вывести код цвета пикселя, да еще и в определенном координате экрана
Federal вне форума Ответить с цитированием
Старый 17.03.2011, 10:43   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

GetPixel, но сначало GetDC нужного окна.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.03.2011, 11:18   #3
Federal
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 77
По умолчанию

Мне нужно скрин пикселя от экрана, т.е. не зависимо какое окно активно на данный момент, или в этом случае все равно придется искать DC окна?
Federal вне форума Ответить с цитированием
Старый 17.03.2011, 11:32   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

экран это окно с номером 0
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.03.2011, 11:44   #5
Federal
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 77
По умолчанию

Код:
var
F: Cardinal;


procedure TForm1.Button1Click(Sender: TObject);
begin
F:=GetPixel(0,200,200);
Memo1.Lines.Add(IntToHex(F,8));
end;
Что то не так, все время выходить FFFFFF =)
Federal вне форума Ответить с цитированием
Старый 17.03.2011, 12:17   #6
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Код:
F:=GetPixel(0,200,200);
Потому что вам нужен не номер окна а его хендл. поэтому делайте так
Код:
var
F: Cardinal;


procedure TForm1.Button1Click(Sender: TObject);
begin
F:=GetPixel(GetDC(Null),200,200);
Memo1.Lines.Add(IntToHex(F,8));
end;
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 17.03.2011, 12:30   #7
Federal
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 77
Восклицание

Код:
var
F: Cardinal;
C: Integer;

procedure TForm1.Button1Click(Sender: TObject);
begin
C:=GetDC(0);
F:=GetPixel(C,200,200);
Memo1.Lines.Add(IntToHex(F,8));
end;
Тыкаю плюсики, спасибо!!!
Federal вне форума Ответить с цитированием
Старый 17.03.2011, 12:33   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
но сначало GetDC нужного окна.
Цитата:
экран это окно с номером 0
намек ясен?
читаем внимательно просто.
хотя выше тоже самое сказали.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.03.2011, 18:57   #9
Federal
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 77
Вопрос

Код:
var
m,i:integer;
SCP:cardinal; //скрин CP
CP:integer;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  for i:=1 to 100 do //проверяет линию в 100 пикселей 
  begin
    M:=50+i; //50 координата Х начало полоски жизни
    SCP:=GetPixel(GetDC(0),M,33); //скриним пиксель
    if IntToHex(SCP,8)='000083B3' then CP:=i;//в итоге останется максимальное значение СP
  end;
  ProgressBar1.Position:=CP; //показывает кол-во здоровья персонажа
end;
Первые 10 секунд работает на Ура, потом начинает мерцать прога, жутко все виснет Что с этим делать?
Federal вне форума Ответить с цитированием
Старый 17.03.2011, 19:57   #10
Federal
Пользователь
 
Регистрация: 21.05.2010
Сообщений: 77
По умолчанию

Код:
var
i:integer;
SCP:cardinal; //скрин CP
CP:integer;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  for i:=1 to 20 do 
  begin
    SCP:=GetPixel(GetDC(0),i*5+50,33); 
    if IntToHex(SCP,8)='000083B3' then CP:=i*5;
 максимальное значение СP
  end;
  ProgressBar1.Position:=CP; //показывает кол-во здоровья персонажа
end;
Урезал код
потом попробывал поставить просто скрин на таймере
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
    SCP:=GetPixel(GetDC(0),20,20); 
end;
Через минут 10-15 все равно начинаются глюки, программа мерцает и тормозит Таймер на 500 млсек. Можно ли как то решить это?
Federal вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрин на видео. Alex Cones Общие вопросы Delphi 3 22.08.2013 08:50
Скрин в 16 бит Mihanches Общие вопросы Delphi 0 11.10.2010 11:55
Сплэш-скрин Johnson Общие вопросы Delphi 2 21.11.2009 12:03
Принт скрин MAcK Win Api 1 31.08.2007 20:48
Лого скрин Elm0 Свободное общение 10 23.06.2007 13:08