uses
Windows, Vcl.Graphics, Vcl.Imaging.pngimage;
procedure SetAlphaBlend(var img: TPngImage; const Alpha: Byte);
var
mScanline, mPixel: Integer;
mScanArray: pByteArray;
begin
try
img.CreateAlpha;
for mScanline := 0 to img.Height - 1 do
begin
mScanArray := img.AlphaScanline[mScanline];
for mPixel := 0 to img.Width - 1 do
begin
mScanArray[mPixel] := Alpha;
end;
end;
except
Exit;
end;
end;
procedure ChangeImage;
var
srcImage : TImage;
tmpBit : TBitmap;
tmpPng : TPngImage;
begin
srcImage := TImage.Create(Self);
srcImage.Picture.LoadFromFile('C:\Test.jpg');
tmpBit := TBitmap.Create;
tmpPng := TPngImage.Create;
try
tmpBit.SetSize(srcImage.Width, srcImage.Height);
if BitBlt(tmpBit.Canvas.Handle, 0, 0,
srcImage.Width,
srcImage.Height,
srcImage.Picture.Bitmap.Canvas.Handle, 0, 0,
SRCCOPY) then
begin
tmpPng.Assign(tmpBit);
SetAlphaBlend(tmpPng, 100); //투명도를 조절합니다.
srcImage.Picture.Bitmap.Assign(tmpPng);
srcmage.Refresh;
end;
finally
tmpBit.Free;
tmpPng.Free;
end;
end;