修改TPngImage的每像素alpha数据

| 我可以在从某处加载和绘制某处之间直接修改TPngImage的每像素alpha数据吗?如果是这样,怎么办?谢谢。     
已邀请:
        是的,我认为这很容易。 例如,此代码会将图像上半部分的每个像素的不透明度设置为零(即,透明度设置为100%):
var
  png: TPNGImage;
  sl: PByteArray;

...

for y := 0 to png.Height div 2 do
begin
  sl := png.AlphaScanline[y];
  FillChar(sl^, png.Width, 0);
end;
这将形成一个线性渐变alpha通道,从左到右从完全透明(alpha = 0)到完全不透明(alpha = 255):
for y := 0 to png.Height do
begin
  sl := png.AlphaScanline[y];
  for x := 0 to png.Width - 1 do
    sl^[x] := byte(round(255*x/png.Width));
end;
基本上,我想说的是
(png.AlphaScanline[y]^)[x]
是第y行和col x处像素的alpha值(不透明度)(以字节为单位)。     
        您可以使用如下形式:
for Y := 0 to Image.Height - 1 do begin
  Line := Image.AlphaScanline[Y];
  for X := 0 to Image.Width - 1 do begin        
      Line[X] := ALPHA        
  end;
end;
    

要回复问题请先登录注册