Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.04 c
14-1132258063
Jakudza
2005-11-17 23:07
2005.12.11
Установка Rx7


14-1132330160
x.pro
2005-11-18 19:09
2005.12.11
С днем студента!


14-1132242762
U-stack
2005-11-17 18:52
2005.12.11
Отключить Касперского


1-1132059265
Aleksandr.
2005-11-15 15:54
2005.12.11
Никак не могу задать колонке в Excel, чтобы он не похабил время!


2-1132557936
Alex_C
2005-11-21 10:25
2005.12.11
Как создать "независимый" телнет?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский