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

Вниз

Помогите!!!   Найти похожие ветки 

 
Laymer   (2006-05-30 07:36) [0]

Доброе время суток!!!!
Я взял из чужой программы кусочек кода. Для моей проги идеально подходит. В целом я понл как он работает работает, но кто - нить объясните подробней для чего каждая команда нужна.
Вот код
procedure TMain.DrawMove(Cnv: TCanvas; x, y, Width1, Height1: Integer;
 Bmp: TBitmap; xsrs1, ysrs1: integer; clTransparent: TColor);
var bmpXOR, bmpAND, bmpINVAND, bmpTarget: TBitmap;
   oldcol: Longint;
begin
 try
   bmpAND := TBitmap.Create;
   bmpAND.Width := Bmp.Width;
   bmpAND.Height := Bmp.Height;
   bmpAND.Monochrome := True;
   oldcol := SetBkColor(Bmp.Canvas.Handle, ColorToRGB(clTransparent));
   BitBlt(bmpAND.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, Bmp.Canvas.Handle, 0, 0, SRCCOPY);
   SetBkColor(Bmp.Canvas.Handle, oldcol);

   bmpINVAND := TBitmap.Create;
   bmpINVAND.Width := Bmp.Width;
   bmpINVAND.Height := Bmp.Height;
   bmpINVAND.Monochrome := True;
   BitBlt(bmpINVAND.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, bmpAND.Canvas.Handle, 0, 0, NOTSRCCOPY);

   bmpXOR := TBitmap.Create;
   bmpXOR.Width := Bmp.Width;
   bmpXOR.Height := Bmp.Height;
   BitBlt(bmpXOR.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, Bmp.Canvas.Handle, 0, 0, SRCCOPY);
   BitBlt(bmpXOR.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, bmpINVAND.Canvas.Handle, 0, 0, SRCAND);

   bmpTarget := TBitmap.Create;
   bmpTarget.Width := Width1;
   bmpTarget.Height := Height1;

   BitBlt(bmpTarget.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, Cnv.Handle, x, y, SRCCOPY);
   BitBlt(bmpTarget.Canvas.Handle, 0, 0, Width1, Height1, bmpAND.Canvas.Handle, xsrs1, ysrs1, SRCAND);
   BitBlt(bmpTarget.Canvas.Handle, 0, 0, Width1, Height1, bmpXOR.Canvas.Handle, xsrs1, ysrs1, SRCINVERT);
   BitBlt(cnv.Handle, x, y, Bmp.Width, Bmp.Height, bmpTarget.Canvas.Handle, 0, 0, SRCCOPY);

 finally
   bmpXOR.Free;
   bmpAND.Free;
   bmpINVAND.Free;
   bmpTarget.Free;

 end;
end;

Заранее спасибо!!!


 
antonn ©   (2006-05-30 10:59) [1]

ну и что он делает? ;)


 
Don Nikola ©   (2006-05-30 12:28) [2]

Я могу ошибаться, но подобное извращение похоже на отрисовку битмапа с колоркеем.
Могу посоветовать только одно, если нужно просто 2d не в окне, то переходи на directdraw или используй свои собственные процедуры отрисовки, если сделать с умом, то будет в разы быстрее и можно будет в окне работать.
Например: http://miek.narod.ru - SpriteUtils2, свои поделки мне лень в инет выкладывать.


 
Laymer   (2006-05-30 13:06) [3]


> Don Nikola ©

Спасибо!!!! Правдо предстоит помучится разобратся во всем этом!!!



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

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

Наверх




Память: 0.45 MB
Время: 0.012 c
2-1149069396
АндрейК
2006-05-31 13:56
2006.06.18
свернутая форма


2-1148835732
Fiallo4ka
2006-05-28 21:02
2006.06.18
Базы данных в Delphi


2-1149068744
volkodav
2006-05-31 13:45
2006.06.18
Проблема с функцией CopyFile


1-1147460541
Mao
2006-05-12 23:02
2006.06.18
подскажите решение клиент/сервер


1-1147251773
wirg
2006-05-10 13:02
2006.06.18
Вопрос по TREEVIEW





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