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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2012, 15:01   #1
Nikk[UA]
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
Лампочка Сравнение двух Bitmap

Нужно сравнить 2 битмапа ширеной 192 и высотой 1 пиксель.


Цитата:
function scannovote() :integer;
var
bm: TBitmap;
bmc: TBitmap;
x,y,hamma : integer;

begin
bm := TBitmap.Create;
bm.Width := 192;
bm.Height := 1;
BitBlt(bm.Canvas.Handle,0,0,192,1,G etWindowDC(form1.Handle),32,284,SRC COPY);

bmc := TBitmap.Create;
bmc.Width := 192;
bmc.Height := 1;
bmc.LoadFromFile('novote.bmp');

hamma:=0;
x:=0;
y:=0;

For x:=0 to Bm.Width-1 do
if bm.Canvas.Pixels[x,1] = bmc.Canvas.Pixels[x,1] then hamma := hamma + 1;

if hamma = bm.Width then
begin
cpl := 2;
cplnovote := 1;
end;

hamma := 0;
bm.Free;
bmc.Free;
end;

Один битмап берется как скриншот определенной области экрана, а второй из файла как образец.

Если битмапы одинаковы, то переменным cpl := 2; cplnovote := 1; присваиваются опеделенные значения.

Но у меня переменным всегда задаются значения если даже битмапы не одинаковы!

Последний раз редактировалось Nikk[UA]; 09.05.2012 в 15:03.
Nikk[UA] вне форума Ответить с цитированием
Старый 09.05.2012, 15:24   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
var
  Form1: TForm1;
  cpl, cplnovote: integer;

procedure TForm1.Button1Click(Sender: TObject);
var
  bm: TBitmap;
  bmc: TBitmap;
  x: integer;

begin
  bm := TBitmap.Create;
  bm.Width := 192;
  bm.Height := 1;
  BitBlt(bm.Canvas.Handle, 0, 0, 192, 1, GetWindowDC(form1.Handle), 32, 284, SRCCOPY);

  bmc := TBitmap.Create;
  bmc.Width := 192;
  bmc.Height := 1;
  bmc.LoadFromFile('novote.bmp');

  cpl := 2;
  cplnovote := 1;

  for x := 0 to Bm.Width - 1 do
    if bm.Canvas.Pixels[x, 0] <> bmc.Canvas.Pixels[x, 0] then
    begin
      cpl := 0;
      cplnovote := 0;
      break;
    end;

  bm.Free;
  bmc.Free;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 09.05.2012, 17:39   #3
Nikk[UA]
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию

Огромное спасибо! Помогло!
Nikk[UA] вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение двух строк helena91 Общие вопросы Delphi 4 23.02.2011 01:17
сравнение двух таблиц Iskin Microsoft Office Excel 3 08.12.2010 07:18
Сравнение двух таблиц scaramangi Microsoft Office Excel 0 17.09.2009 17:15
сравнение двух фаилов al508 Microsoft Office Excel 4 24.06.2009 07:55
сравнение двух баз. Layk Microsoft Office Access 2 04.06.2009 23:37