Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Как правильно отобразить картинку с полупрозрачными пикселями?   Найти похожие ветки 

 
Jimmy   (2012-04-05 17:42) [0]

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


 
KilkennyCat ©   (2012-04-05 18:49) [1]


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

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


 
KilkennyCat ©   (2012-04-05 18:52) [2]

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


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

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


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

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


 
KilkennyCat ©   (2012-04-05 18:58) [5]


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

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


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


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

TPNGImage


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

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


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

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

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

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


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

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


 
KilkennyCat ©   (2012-04-05 22:52) [10]

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.126 c
15-1329209570
Димка На
2012-02-14 12:52
2013.03.22
Как сделать чтобы WinControl ловил mousemove за пределами себя.?


15-1351157222
Empleado
2012-10-25 13:27
2013.03.22
DB с четырьмя таблицами


15-1352728971
Дмитрий Белькевич
2012-11-12 18:02
2013.03.22
Ошибка при билде проекта. XE3


15-1339068423
Zheksonz
2012-06-07 15:27
2013.03.22
Синтаксис языка Си


15-1334583721
Андреевич
2012-04-16 17:42
2013.03.22
Узнать когда был выход из ждущего режима