时间过得真快,又到了周末!
今天晚上,我们就讲讲如何设置Bitmap中的像素点吧。
原先XE还保持了Bitmap.Scanline[I]的方法,不过到了XE4我们再一次无法使用了。
方法总比困难多。
通过TBitmapData,我们还是可以访问每个像素点的,也就意味着我们可以去改变他们了。
代码如下:
procedure TForm1.TestAlphaColorToPixel(ABitmap: FMX.Types.TBitmap; Color: TAlphaColor;
Distance: integer);
var
bitdata1: TBitmapData;
I: integer;
J: integer;
C: PAlphaColorRec;
begin
if (ABitmap.Map(TMapAccess.maReadWrite, bitdata1)) then
try
for I := 0 to Round(ABitmap.Width) - 1 do
for J := 0 to ABitmap.Height - 1 do
begin
begin
C := @PAlphaColorArray(bitdata1.Data)
[J * (bitdata1.Pitch div GetPixelFormatBytes(ABitmap.PixelFormat))+ I];
if C^.A <128 then
begin
C^.A := 255;
C^.R := 0;
C^.G := 0;
C^.B := 0;
end
else if C^.A = 128 then
begin
C^.A := 128;
C^.R := 128;
C^.G := 128;
C^.B := 128;
end
else
begin
C^.A := 255;
C^.R := 255;
C^.G := 255;
C^.B := 255;
end;
end;
end;
finally
ABitmap.Unmap(bitdata1);
end;
end;
官方Demo: