Я загружаю png-файл в TPNGImage, а затем отображаю его в TImage. Нет проблем. Затем я создаю TBitmap и назначаю его TPNGImage, и отображаю его в TImage. Нет проблем.
Затем я создаю второй TPNGImage и назначаю его TBitmap. В этом случае, если я отображаю его в TImage, он потерял прозрачность. Если для TBitmap.Transparent установить значение True, перед назначением PNGImage изображение PNGI будет в основном прозрачным, но есть небольшая область, где прозрачность была потеряна и показана черным.
var
Bmp: TBitmap;
PngImage: TPNGImage;
PngImage2: TPNGImage;
begin
PngImage := TPNGImage.Create;
try
PngImage.LoadFromFile(FILE_NAME);
Image1.Picture.Assign(PngImage);
Bmp := TBitmap.Create;
try
Bmp.Assign(PngImage);
Image2.Picture.Assign(Bmp);
PngImage2 := TPNGImage.Create;
try
//Bmp.Transparent := True;
PngImage2.Assign(Bmp);
Image3.Picture.Assign(PngImage2);
finally
PngImage2.Free;
end;
finally
Bmp.Free;
end;
finally
PngImage.Free;
end;
end;
Результат без настройки Bitmap.Transparent to True:
Результат, когда я устанавливаю для Bitmap.Transparent значение True: в изображении присутствует немного черного цвета
Как назначить PNGImage для растрового изображения без потери любой прозрачности?