如何完全禁用给定的
PNGObject
的透明度?顺便说一下,我正在使用版本为1.564的 PNGImage 单元。PNGObject
的透明度?顺便说一下,我正在使用版本为1.564的 PNGImage 单元。TPNGObject
图像透明是不可能的。或者说,我找不到这个属性。因为当你分配或加载一个图像时,TPNGObject
会从被分配的图像文件中获取图像参数(包括透明度),所以它应该由属性来控制。RemoveTransparency
过程:uses
PNGImage;
procedure TForm1.Button1Click(Sender: TObject);
var
PNGObject: TPNGObject;
begin
PNGObject := TPNGObject.Create;
try
PNGObject.LoadFromFile('C:\Image.png');
PNGObject.RemoveTransparency;
PNGObject.Draw(Canvas, Rect(0, 0, PNGObject.Width, PNGObject.Height));
finally
PNGObject.Free;
end;
end;
如果只是想将TPNGObject(Delphi PNGComponents库)绘制到某个背景颜色(例如:白色)上并进行alpha混合,请尝试以下操作:
uses
PNGImage, PNGFunctions;
procedure TForm1.Button1Click(Sender: TObject);
var png: TPNGObject;
bmp: TBitmap;
begin
try
// load PNG
png := TPNGObject.Create;
png.LoadFromFile('MyPNG.png');
// create Bitmap
bmp := TBitmap.Create;
bmp.Width := png.Width;
bmp.Height := png.Height;
// set background color to whatever you want
bmp.Canvas.Brush.Color := clWhite;
bmp.Canvas.FillRect(Rect(0, 0, png.Width, png.Height));
// draw PNG on Bitmap with alpha blending
DrawPNG(png, bmp.Canvas, Rect(0, 0, png.Width, png.Height), []);
// save Bitmap
bmp.SaveToFile('MyBMP.bmp');
finally
FreeAndNil(png);
FreeAndNil(bmp);
end;
end;
要使用DrawPNG过程,您需要包含PNGFunctions单元。