LINUX.ORG.RU

Отрисовать изображение с альфа каналом

 ,


0

1

Добрый день. В работе с графикой опыта нет (теоретических знаний минимум), подскажите по сабжу. имеется код

painter.fillRect(rect(), Qt::black);
...
const QImage &image = model().backgroudImage();
painter.drawImage(rect().center() - image.rect().center(), image);

как заставить его правильно отрисоваться с использованием альфа канала? спасибо.

★★★★★

в общем, у меня было bmp изображение с альфа каналом (гимп это подтвердил), загружаю его в QImage, вызываю метод hasAlphaChannel(), возвращает false. Конвертнул в png (с сохранением альфа канала), загружаю, опять вызываю hasAlphaChannel(), получаю true, и картинка рисуется как надо без лишних телодвижений.

какие то ограничения на bmp? или что-то не так делаю? просветите

vvviperrr ★★★★★
() автор топика

Формат bmp не поддерживает альфа-канал по стандарту, возможно, Qt не озаботилась его догрузкой.

schizoid ★★★
()
Ответ на: комментарий от schizoid

schizoid

Формат bmp не поддерживает альфа-канал по стандарту, возможно, Qt не озаботилась его догрузкой.

Стандарту чего? Что-то я не помню на него каких-либо стандартов. Та же винда через WinAPI с ним отлично работает.

32-битные bmp бывают, и проблема в Qt. Судя по сорцам, он просто игнорит альфа-канал при загрузке, хотя и знает о его существовании.

При желании можешь исправить /gui/image/qbmphandler.cpp и послать патч.

Pavval ★★★★★
()
Ответ на: комментарий от Pavval

Да, игнорит, до этого вообще не загружал bmpv5 (и даже 4, если не изменяет память).
Мне было лень делать полную поддержку, учитывая что я не был уверен, что патч вообще примут, а принимали его около полугода, за это время весь интерес пропал.

А ведь уже второй человек на лоре жалуется на это (из тех, про кого я знаю), никогда бы не подумал, что это такая уж нужная фича.

anonymous
()
Ответ на: комментарий от Pavval

Угу, я в курсе, тоже так думаю.

В концов всегда можно написать для себя, можно даже выдрать код из кутэ и загружать отдельным классом.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.