Delphi Firemonkey PNG到位图
在firemonkey xe5中,当我将一个透明的PNG图像保存到位图中时,它的透明度变为黑色。我怎样才能换成白色 我只是使用:Delphi Firemonkey PNG到位图,delphi,bitmap,firemonkey,Delphi,Bitmap,Firemonkey,在firemonkey xe5中,当我将一个透明的PNG图像保存到位图中时,它的透明度变为黑色。我怎样才能换成白色 我只是使用: Image1.bitmap.loadfromfile('IMG.png'); image1.bitmap.Savetofile('image.BMP'); 这不是一个完整的解决方案,但它会让您开始。您需要调整A、R、G、B值以获得所需的值 procedure ApplyNoAlphaEdge(ABitmap: TBitmap; OpacityThreshold: i
Image1.bitmap.loadfromfile('IMG.png');
image1.bitmap.Savetofile('image.BMP');
这不是一个完整的解决方案,但它会让您开始。您需要调整A、R、G、B值以获得所需的值
procedure ApplyNoAlphaEdge(ABitmap: TBitmap; OpacityThreshold: integer);
var
bitdata1: TBitmapData;
I: integer;
J: integer;
C: TAlphaColor;
begin
if (ABitmap.Map(TMapAccess.maReadWrite, bitdata1)) then
try
for I := 0 to ABitmap.Width - 1 do
for J := 0 to ABitmap.Height - 1 do
begin
begin
{$IF DEFINED(VER270) OR DEFINED(VER280) OR DEFINED(VER290)}
C := PixelToAlphaColor(@PAlphaColorArray(bitdata1.Data)
[J * (bitdata1.Pitch div PixelFormatBytes[ABitmap.PixelFormat])
+ 1 * I], ABitmap.PixelFormat);
{$ELSE}
C := PixelToAlphaColor(@PAlphaColorArray(bitdata1.Data)
[J * (bitdata1.Pitch div GetPixelFormatBytes(ABitmap.PixelFormat))
+ 1 * I], ABitmap.PixelFormat);
{$ENDIF}
if TAlphaColorRec(C).A<OpacityThreshold then
begin
TAlphaColorRec(C).A := 0;
TAlphaColorRec(C).R := 255;
TAlphaColorRec(C).G := 255;
TAlphaColorRec(C).B := 255;
{$IF DEFINED(VER270) OR DEFINED(VER280) OR DEFINED(VER290)}
AlphaColorToPixel(C, @PAlphaColorArray(bitdata1.Data)
[J * (bitdata1.Pitch div PixelFormatBytes[ABitmap.PixelFormat])
+ 1 * I], ABitmap.PixelFormat);
{$ELSE}
AlphaColorToPixel(C, @PAlphaColorArray(bitdata1.Data)
[J * (bitdata1.Pitch div GetPixelFormatBytes(ABitmap.PixelFormat))
+ 1 * I], ABitmap.PixelFormat);
{$ENDIF}
end;
end;
end;
finally
ABitmap.Unmap(bitdata1);
end;
end;
过程ApplyNoAlphaEdge(ABitmap:TBitmap;OpacityThreshold:integer);
变量
bitdata1:TBitmapData;
I:整数;
J:整数;
C:滑石色;
开始
如果是(ABitmap.Map(TMapAccess.mareadswrite,bitdata1)),则
尝试
对于I:=0到ABitmap.Width-1 do
对于J:=0到ABitmap.Height-1 do
开始
开始
{$IF DEFINED(VER270)或DEFINED(VER280)或DEFINED(VER290)}
C:=像素到alphacolor(@PAlphaColorArray(bitdata1.Data)
[J*(bitdata1.Pitch div PixelFormatBytes[ABitmap.PixelFormat])
+1*I],ABitmap.PixelFormat);
{$ELSE}
C:=像素到alphacolor(@PAlphaColorArray(bitdata1.Data)
[J*(bitdata1.Pitch div GetPixelFormatBytes(ABitmap.PixelFormat))
+1*I],ABitmap.PixelFormat);
{$ENDIF}
如果TAlphaColorRec(C)。不确定。这个演示对位图也有效果(我认为):