Как да деактивирам напълно прозрачността на даден PNGObject
? Между другото, използвам единица PNGImage от версия 1.564.
Как да деактивирате прозрачността за PNG
comment
Какво означава да деактивирате прозрачността? Искате ли да зададете цветовия формат/битова дълбочина на Truecolor? Това е 24 бита на пиксел, без алфа.
- person David Heffernan   schedule 11.06.2012
comment
@Roberts, защо искаш PNG без прозрачност? Предполагам, че ако искате, можете да присвоите обекта TPngImage на нов обект TBitmap и след това отново да присвоите обекта TBitmap обратно към обекта TPngImage. Не съм 100% сигурен, че това ще проработи, но мисля, че трябва.
- person bjaastad_e   schedule 11.06.2012
comment
@Elling Вече го пробвах :D. Не се получи :D.
- person Little Helper   schedule 11.06.2012
comment
@Робъртс Добре. В момента нямам Delphi под ръка, така че не мога да ви помогна да го проучите допълнително. Но виждам, че подобен въпрос е зададен по-рано в stackoverflow. Може би има малко помощ в отговорите на този въпрос: stackoverflow.com/questions/1141561
- person bjaastad_e   schedule 11.06.2012
comment
@Elling TBitmap поддържа частична прозрачност
- person David Heffernan   schedule 11.06.2012
Отговори (2)
Не мисля, че е възможно да деактивирате за постоянно 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;
person
TLama
schedule
11.06.2012
За просто начертаване на 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.
person
asd
schedule
10.10.2012