指定されたの透過性を完全に無効にする方法はPNGObject
? ちなみに、バージョン1.564のPNGImageユニットを使用しています。
1732 次
2 に答える
8
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;
于 2012-06-11T07:56:09.080 に答える
2
アルファ ブレンディングを使用して TPNGObject (Delphi PNGComponents ライブラリ) を背景色 (例: 白) に描画するには、次のようにします。
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 ユニットを含める必要があります。
于 2012-10-10T11:13:45.217 に答える