Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.11;
Скачать: CL | DM;

Вниз

Копирование экрана   Найти похожие ветки 

 
Dmitrich   (2005-11-12 17:51) [0]

Возник такой вопрос: Как реализовать копирование экрана и в какую переменную, чтобы потом можно было фрагмент из скопированного экрана сравнить с другим фрагментом на совпадение? Спасибо.


 
Dmitrich   (2005-11-12 18:13) [1]

Как копировать в TBitMap разобрался! А как, допустим, из картинки в TBitMap (100x100) сравнить фрагмент с координатами (10,10,20,20) с фрагментом другого BitMap? Заранее спасибо


 
TStas ©   (2005-11-12 20:22) [2]

Canvas.CopyRect+F1


 
kami ©   (2005-11-13 14:37) [3]

BitBlt - гораздо быстрее CopyRect,

Сравнение битмапов :
function TTCPParser.BitmapsEqual(var Bmp1, Bmp2: TBitmap): Boolean;
{Author  Магнитоныч(c)}
var H, H2, LineLength, y: Integer;
   DS: TDIBSection;

function EqualLine(Line: Integer): Boolean;
begin
  Result := CompareMem(@Bmp1.ScanLine[Line]^,
                       @Bmp2.ScanLine[Line]^, LineLength);
end;

begin
Result := False;
{ Сравнение базовых параметров }
if GetObject(Bmp1.Handle, SizeOf(DS), @DS) > 0
  then LineLength := DS.dsBm.bmWidthBytes
  else Exit; //error

H := Bmp1.Height - 1;
if H = 0 then
  Result := EqualLine(0)
else begin
  Result := True;
  H2 := ((H+1) div 2) - 1;

  { Сравниваем строки. Цикл проходит строки одновременно сверху
    и снизу, сходясь в центре: так больше вероятность
    скорейшего обнаружения отличающихся пикселей. }
  for y := 0 to H2 do
    if (not EqualLine(y)) or (not EqualLine(H-y)) then
    begin
      Result := False;
      Exit;
    end;

  { Если высота не кратна двум, сравниваем средние строки,
    которые пропустили в цикле. Это сделано, чтобы дважды
    не вызавать CompareMem для одной строки. }
  if (H mod 2) = 0 then
    Result := EqualLine(H2 + 1);
end;
end;


Учти, что чем больше цветность битмапов, чем меньше ширина и больше высота, тем медленнее работает.
Из оригинала убрана проверка габаритов и (кажется) цветности



Страницы: 1 вся ветка

Текущий архив: 2005.12.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.062 c
4-1128591108
Symbol
2005-10-06 13:31
2005.12.11
Ввод со звуковой карты


5-1116936831
P.N.P.
2005-05-24 16:13
2005.12.11
Как определить, что контрол позволяет накладывать на себя другие


4-1129201201
Виталий11111
2005-10-13 15:00
2005.12.11
Перехват сообщений от мыши


3-1130163991
Haza
2005-10-24 18:26
2005.12.11
dxDBGrid и adgoLoadAllData


6-1125477477
Alex870
2005-08-31 12:37
2005.12.11
Как отловить disconnect