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

Вниз

Как можно реализовать плавное проявление изображения bmp?   Найти похожие ветки 

 
kta ©   (2003-12-09 16:42) [0]

Собственно весь вопрос в теме...


 
хз ©   (2003-12-09 17:02) [1]

Есть процедурка, но она плавно преобразует одно изображение в другое. Думаю переделать ее под свои нужды не так уж сложно...

Procedure Morph(Bmp,ToBmp:TBitMap;Count:Integer;BmpCanvas:TCanvas);
var
i: integer;
x, y: integer;
bm: TBitMap;
p1, p2, p: PByteArray;
begin
bm := TBitMap.Create;
if Bmp.Height < ToBmp.Height then
begin
bm.Height := Bmp.Height;
ToBmp.Height := Bmp.Height;
end
else
Begin
bm.Height := ToBmp.Height;
Bmp.Height := ToBmp.Height;
end;
if Bmp.Width < ToBmp.Width then
begin
bm.Width := Bmp.Width;
ToBmp.Width := Bmp.Width;
end
else
begin
bm.Width := ToBmp.Width;
Bmp.Width := ToBmp.Width;
end;
bm.PixelFormat := pf24bit;
Bmp.PixelFormat := pf24bit;
ToBmp.PixelFormat := pf24bit;
BmpCanvas.Draw(0, 0, Bmp);
for i := 1 to count - 1 do
begin
for y := 0 to bm.Height - 1 do
begin
p := bm.ScanLine[y];
p1 := Bmp.ScanLine[y];
p2 := ToBmp.ScanLine[y];
for x := 0 to bm.Width * 3 - 1 do
p^[x] := round((p1^[x] * (count - i) + p2^[x] * i) / count);
end;
BmpCanvas.Draw(0, 0, bm);
Application.ProcessMessages;
if Application.Terminated then
break;
end;
BmpCanvas.Draw(0, 0, ToBmp);
bm.Destroy;
End;


 
kta ©   (2003-12-10 09:10) [2]

Спасибо! Все получилось :))



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

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

Наверх




Память: 0.47 MB
Время: 0.011 c
6-75297
Zoltan
2003-10-26 21:15
2003.12.23
Привет всем!есть вопрос как скачать только 100кб,а не весь файл


7-75431
Kikimora
2003-10-10 01:39
2003.12.23
дисковод


1-75249
DimaLos
2003-12-10 14:33
2003.12.23
Как добавить разрыв страницы в Excel из Delphi?


14-75319
barbi
2003-12-01 15:56
2003.12.23
Ремонт квартиры


3-75105
Glaz
2003-11-29 13:11
2003.12.23
Как сохранять изображения в IBase