Os procedimentos deste post devem ser precedidos pelos já definidos no post da parte I.
Manipulando os pixels de TLazIntfImage
CurColor_old := SrcIntfImg.Colors[0,0];
for py:=0 to SrcIntfImg.Height-1 do
begin
for px:=0 to SrcIntfImg.Width-1 do
begin
CurColor:=SrcIntfImg.Colors[px,py];
TempIntfImg.Colors[px,py] := CurColor xor TColorToFPColor(clRed);
end;
end;
TempIntfImg.CreateBitmaps(ImgHandle,ImgMaskHandle,false);
TempBitmap.Handle:=ImgHandle;
TempBitmap.MaskHandle:=Mascara.MaskHandle;
Img1.Picture.Bitmap.Assign(TempBitmap);
Img1.Refresh;
Percorremos (scaneamos) as linhas da imagem de cima para baixo (o ponto 0,0 é o superior esquerdo da imagem). A cada linha escaneada, scaneamos da esquerda para a direita.
No exemplo fizemos uma operação lógica xor sobre cada pixel em relação à cor vermelha. Observe o efeito em seu programa.
Código completo deste procedimento
TempBitmap := TBitmap.Create;
oBmp := TBitmap.Create;
oBmp.PixelFormat:=pf32bit;
oBmp := Img1.Picture.Bitmap;
SrcIntfImg:=TLazIntfImage.Create(0,0);
SrcIntfImg.LoadFromBitmap(oBmp.Handle,oBmp.MaskHandle);
TempIntfImg:=TLazIntfImage.Create(0,0);
TempIntfImg.LoadFromBitmap(oBmp.Handle,oBmp.MaskHandle);
CurColor_old := SrcIntfImg.Colors[0,0];
for py:=0 to SrcIntfImg.Height-1 do
begin
for px:=0 to SrcIntfImg.Width-1 do
begin
CurColor:=SrcIntfImg.Colors[px,py];
TempIntfImg.Colors[px,py] := CurColor xorTColorToFPColor(clRed);
end;
end;
TempIntfImg.CreateBitmaps(ImgHandle,ImgMaskHandle,false);
TempBitmap.Handle:=ImgHandle;
TempBitmap.MaskHandle:=ImgMaskHandle;
Img1.Picture.Bitmap.Assign(TempBitmap);
Img1.Refresh;
Nenhum comentário:
Postar um comentário