Главная страница
    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.46 MB
Время: 0.05 c
1-1131797065
zxc
2005-11-12 15:04
2005.12.11
одновременно avi показывать и рисовать


2-1132847531
qp
2005-11-24 18:52
2005.12.11
Массив констант моего типа?


4-1128591108
Symbol
2005-10-06 13:31
2005.12.11
Ввод со звуковой карты


14-1132513063
SergProger
2005-11-20 21:57
2005.12.11
Какой Socket у Pentium 3 ?


8-1120831896
4ubaka
2005-07-08 18:11
2005.12.11
перевод изобрадений из jpg в bmp





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