如何解决修改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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。