Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как правильно отобразить картинку с полупрозрачными пикселями? [D7, XP]


Jimmy ©   (2012-04-05 17:42:00) 

То есть непрозрачные пикселы должны отображаться "как есть", а полупрозрачные сливаться с фоном при выводе на форму или Image. Причем проблема уже на стадии создания рисунка. Photoshop CS позволяет создавать 32-битные bmp, но почему то при этом при сохранении файла теряется прозрачность. Создавая там же 32-битные png прозрачность сохраняется, но PNGZLib, которой я пользуюсь на Delphi7 преобразовывает его, кажется, в 24-битный при открытии. Прошу помощи, вопрос вроде избитый, но второй день поиска ответа ни к чему не привели. Заранее спасибо!


Дмитрий С   (2012-04-06 10:02:00) [1]

Чтобы фотошоп сохранил альфу в BMP нужно этот альфа канал отдельным каналом добавить, тогда флажек RGBA в фотошопе станет активным. Ну и отображать с помощью AlphaBlend


KilkennyCat   (2012-04-05 22:52:00) [2]

ну дык. не зря именно он вошел в поставку rad studio


Jimmy   (2012-04-05 20:06:00) [3]

Кажется получилось! Сменил PNGZLib на PNGImage и все заработало, без всяких AlphaBlend, просто Form1.Canvas.Draw(x,y,p), где p:TPNGObject!


Jimmy   (2012-04-05 19:20:00) [4]

Соответственно после:

P:TPNGImage;
p.LoadFromFile('C:\1.png');
Form1.Canvas.Draw(0,0,p);

никакого сглаживания в областях полупрозрачности не происходит.


Jimmy   (2012-04-05 19:14:00) [5]

Повторюсь: использую PNGZLib, открывая 32-битный png-файл его свойство PixelFormat принимает значение pf24bit. Как быть?


KilkennyCat   (2012-04-05 19:11:00) [6]


> Jimmy   (05.04.12 18:54) [3]
>
> Так как же быть?

TPNGImage


KilkennyCat   (2012-04-05 18:58:00) [7]


> png предполагает 24 и 48 бит, не 32

опс, это я ступил при умножении. 24 и 48 - это дя RGB. RGBA - 32 и 64 бита.


CRLF   (2012-04-05 18:56:00) [8]

А как же альфа-канал в PNG?


Jimmy   (2012-04-05 18:54:00) [9]

Так как же быть?


KilkennyCat   (2012-04-05 18:52:00) [10]

причем 24 бита не предполагают альфа-канал.


KilkennyCat   (2012-04-05 18:49:00) [11]


> 32-битные bmp, но почему то при этом при сохранении файла
> теряется прозрачность.

bmp не предполагает наличие полупрозрачности.
png предполагает 24 и 48 бит, не 32


Наверх

Титульная страница Поиск, карта сайта Написать письмо