Форум: "Начинающим";
Текущий архив: 2010.01.31;
Скачать: [xml.tar.bz2];
ВнизКак наложить одну картинку на другую? Найти похожие ветки
← →
Леонид Артюхов (2009-12-09 08:37) [0]Привет,
Делаю так: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(Налаживаемый битмап), что я делаю не так?
← →
brother © (2009-12-09 09:25) [1]и откуда этот тормозной код?
← →
Леонид Артюхов (2009-12-09 09:34) [2]
> brother © (09.12.09 09:25) [1]
Копипаст из инета!
← →
MBo © (2009-12-09 09:44) [3]В циклах верхняя граница неправильная, нужно единицу отнять
сложный if можно заменить на (условие будет обратным, ветки поменять)
if Odd(I) xor Odd(J) then
или
if Odd(i + j)
в функции зачем делается
BM := TBitMap.Create;
?
← →
Леонид Артюхов (2009-12-09 10:12) [4]
> BM := TBitMap.Create;
В процедуре, думаю что не к чему!
← →
Леонид Артюхов (2009-12-09 10:27) [5]Сделал так, не помогло, но скорее всего я не так все исправил!
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;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.01.31;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c