![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как наложить одну картинку на другую? [D2005, XP]
Леонид Артюхов © (2009-12-09 08:37:00)Привет,
Делаю так:
procedure MixBMP(BM1, BM2: TBitMap; var BM: TBitMap);
var
I, J: Integer;
MinW, MinH: Integer;
begin
BM := TBitMap.Create;
if BM1.Width < BM2.Width then
MinW := BM1.Width
else
MinW := BM2.Width;
if BM1.Height < BM2.Height then
MinH := BM1.Height
else
MinH := BM2.Height;
BM.Width := MinW;
BM.Height := MinH;
for I := 0 to MinW do
for J := 0 to MinH do
if (Odd(I) and Odd(J)) or ((not (Odd(I))) and (not (Odd(J)))) then
BM.Canvas.Pixels[I, J] := BM1.Canvas.Pixels[I, J]
else
BM.Canvas.Pixels[I, J] := BM2.Canvas.Pixels[I, J];
end;
...
var
NalBitmap: TBitMap;
begin
NalBitmap := TBitmap.Create;
try
MixBMP(Image1.Picture.Bitmap, Image2.Picture.Bitmap, NalBitmap);
Image1.Picture.Bitmap := NalBitmap;
Image1.Refresh;
finally
NalBitmap.Free;
end;
...
В итоге Image1(Основной битмап) затирается и виден только Image2(Налаживаемый битмап), что я делаю не так?
Леонид Артюхов (2009-12-09 10:27:00) [1]Сделал так, не помогло, но скорее всего я не так все исправил!
procedure MixBMP(BM1, BM2: TBitMap; var BM: TBitMap);
var
I, J: Integer;
MinW, MinH: Integer;
begin
if BM1.Width < BM2.Width then
MinW := BM1.Width
else
MinW := BM2.Width;
if BM1.Height < BM2.Height then
MinH := BM1.Height
else
MinH := BM2.Height;
BM.Width := MinW;
BM.Height := MinH;
for I := 0 to MinW do
for J := 0 to MinH -1 do
if Odd(i + j) then
BM.Canvas.Pixels[I, J] := BM1.Canvas.Pixels[I, J]
else
BM.Canvas.Pixels[I, J] := BM2.Canvas.Pixels[I, J];
end;
Леонид Артюхов (2009-12-09 10:12:00) [2]
> BM := TBitMap.Create;
В процедуре, думаю что не к чему!
MBo (2009-12-09 09:44:00) [3]В циклах верхняя граница неправильная, нужно единицу отнять
сложный if можно заменить на (условие будет обратным, ветки поменять)
if Odd(I) xor Odd(J) then
или
if Odd(i + j)
в функции зачем делается
BM := TBitMap.Create;
?
Леонид Артюхов (2009-12-09 09:34:00) [4]
> brother © (09.12.09 09:25) [1]
Копипаст из инета!
brother (2009-12-09 09:25:00) [5]и откуда этот тормозной код?