Я использую GR32 для рисования нескольких полупрозрачных изображений PNG. До сих пор я использовал следующий метод:
png:= TPNGObject.Create;
png.LoadFromFile(...);
PaintBox321.Buffer.Canvas.Draw(120, 20, png);
однако Я хотел переключиться на метод, предложенный на сайте GR32 ( http://graphics32.org/wiki/FAQ/ImageFormatRelated ):
tmp:= TBitmap32.Create;
LoadPNGintoBitmap32(tmp, ..., foo);
tmp.DrawMode:= dmBlend;
PaintBox321.Buffer.Draw(Rect(20, 20, 20+ tmp.Width, 20+tmp.Height),
tmp.ClipRect, tmp);
Хотя первый метод работает отлично, второй - который должен дать тот же результат - вызывает очень странную проблему с альфа-каналом, см. изображение (которое также показывает сравнение с тем же изображением, "организованным" в Paint.NET - и фон, и значок были открыты на слоях редактора). Изображение показывает, что Bitmap32 загружен или отрисован неправильно. Есть какие-нибудь советы?
- добавлено 22 ноября
Я обнаружил, что речь идет не о рисовании, а о загрузке PNG в BMP32. Сохранение из BMP32 в PNG генерирует неверные , "выбеленное" (тот, что слева) PNG изображение.