Delphi, GR32 + PngObject: преобразование в Bitmap32 не работает должным образом

Я использую 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 загружен или отрисован неправильно. Есть какие-нибудь советы?

Problem with TBitmap32 alpha channel

- добавлено 22 ноября

Я обнаружил, что речь идет не о рисовании, а о загрузке PNG в BMP32. Сохранение из BMP32 в PNG генерирует неверные , "выбеленное" (тот, что слева) PNG изображение.

5
задан migajek 22 November 2011 в 14:39
поделиться