Название: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 22, 2010, 11:30 Всем привет. Вопрос такой: как сделать так, чтобы картинка с альфаканалом корректно отображалась на видгете? Если просто поместить её на оный, то альфаканал будет игнорироваться, и картинка будет отображаться не так, как, например, над объектом типа QGraphicsView. Заранее спасибо.
Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: SABROG от Января 22, 2010, 12:38 Нарисуйте чего вы хотите добиться.
Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 22, 2010, 12:52 картинка на виджете выглядит так: http://img42.imageshack.us/img42/390/19336189.png, а должна иметь вид http://img704.imageshack.us/img704/5029/42539447.png (т.к. имеет альфаканал)
Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: SASA от Января 22, 2010, 13:34 Я рисовал в паитере. Сначала заливал паинтер прозрачным цветом, потом отрисовывал туда куртинку.
Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 22, 2010, 14:35 Пробовал и так - результат такой же..
И у Вас альфаканал начинал работать? Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: SASA от Января 22, 2010, 15:04 Вы рисете через Qpixmap? Если да, то что возвращает QPixmap::hasAlpha?
Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 22, 2010, 15:22 да, true - в противном случае все было бы гораздо проще.. )
Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: SABROG от Января 22, 2010, 15:27 У виджета стоит setAutofilBackground(false)?
Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: lit-uriy от Января 22, 2010, 16:15 всё должно быть нормально с альфа каналом.
А из приведённых картинок я альфа канала в упор не наблюдаю, только чёрный фон. Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 22, 2010, 16:25 У виджета стоит setAutofilBackground(false)? ставил - результат не меняется..Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 22, 2010, 16:43 всё должно быть нормально с альфа каналом. в мире еще не должно быть войн, голодных детей и ненависти.. )А из приведённых картинок я альфа канала в упор не наблюдаю, только чёрный фон. дело не в фоне, а в отображении самой картинки..Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: ax от Января 22, 2010, 16:43 Если виджет top-level добавь
Код: widget->setWindowFlags(Qt::FramelessWindowHint); Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 22, 2010, 16:55 наверное помогло бы, но у меня версия Qt 4.4.3 - там этой фичи нет..
Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: ax от Января 22, 2010, 17:05 Тогда может http://www.qtcentre.org/wiki.php?title=ARGB-Widgets (http://www.qtcentre.org/wiki.php?title=ARGB-Widgets) поможет.
Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: SABROG от Января 22, 2010, 17:13 Что это за виджет кнопка, который является отдельным окном?
Выложите минимальный компилируемый пример. Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 22, 2010, 17:19 Тогда может http://www.qtcentre.org/wiki.php?title=ARGB-Widgets (http://www.qtcentre.org/wiki.php?title=ARGB-Widgets) поможет. спасибо, буду ковырять..Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 22, 2010, 17:37 Что это за виджет кнопка, который является отдельным окном? Выложите минимальный компилируемый пример. Есть приложение-видеоплеер с главным окном, пронаследованным от QWidget'а. При нажатии на "паузу" поверх видео появляется виджет типа QLabel c загруженной в него картинкой с альфаканалом (см. ссылки выше). Проблема в том, что при добавлении, например, в объект класса QGraphicsScene картинка рисуется с учетом альфаканала, а при добавлении в QLabel альфаканал игнорируется Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: lit-uriy от Января 22, 2010, 18:16 >>а при добавлении в QLabel альфаканал игнорируется
чушь собачья, всё учитывается. Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: SASA от Января 23, 2010, 11:37 Я думаю дело в картинке.
Накидал примерчик. Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 25, 2010, 11:30 чушь собачья, всё учитывается. на каком основании сделан столь резкий и категоричный вывод?Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 25, 2010, 11:40 Я думаю дело в картинке. откуда взят файл "ui_alpha.h"?Накидал примерчик. Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: Авварон от Января 25, 2010, 11:45 сгенерён дизайнером
Название: Re: Корректное отображение картинки с альфа Отправлено: SASA от Января 25, 2010, 11:50 Он получается после обработки alpha.ui специальным кутэшным парсером.
Если интересно, прочитейте у Шлее как происходит компиляция кутэшных проектов. По-моему, там есть очень красивая и понятная диаграмка. Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: SASA от Января 25, 2010, 11:51 Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: Авварон от Января 25, 2010, 11:53 уболтал, uic'ом... в старые добрые времена приходилось сохранять код формочек ручками из дизайнера... к-ый и звал уик где-то там в фоне
Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 25, 2010, 12:59 Ситуация оказалась довольно простой: сама картинка рисуется на объекте QLabel с учетом альфаканала, но из-за серого фона самого объекта QLabel кажется, что альфаканал игнорируется.. В моем случае, наверное, единственным выходом будет использование http://www.qtcentre.org/wiki.php?title=ARGB-Widgets. Всем спасибо и удачи!
Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: SABROG от Января 25, 2010, 13:16 Ситуация оказалась довольно простой: сама картинка рисуется на объекте QLabel с учетом альфаканала, но из-за серого фона самого объекта QLabel кажется, что альфаканал игнорируется.. В моем случае, наверное, единственным выходом будет использование http://www.qtcentre.org/wiki.php?title=ARGB-Widgets. Всем спасибо и удачи! Ты рисуешь картинку на QLabel через paintEvent() или ставишь через метод? У меня все нормально работает через метод setPixmap() (http://img63.imageshack.us/img63/6834/qlabelalpha.png) Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: Kolobok от Января 25, 2010, 13:22 Ситуация оказалась довольно простой: сама картинка рисуется на объекте QLabel с учетом альфаканала, но из-за серого фона самого объекта QLabel кажется, что альфаканал игнорируется.. В моем случае, наверное, единственным выходом будет использование http://www.qtcentre.org/wiki.php?title=ARGB-Widgets. Всем спасибо и удачи! А что мешает сделать фон прозрачным? Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 25, 2010, 13:54 Ты рисуешь картинку на QLabel через paintEvent() или ставишь через метод? У меня все нормально работает через метод setPixmap() пробовал и так, и так - разницы никакой.. если я не ошибаюсь, приведенная картинка не имеет альфаканала.. Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 25, 2010, 13:56 А что мешает сделать фон прозрачным? если Вы имеете ввиду, в paintEvent'е сначала залить область Qt::transparent, а затем на ней рисовать QPixmap, то результат не меняется.. Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: SABROG от Января 25, 2010, 14:07 пробовал и так, и так - разницы никакой.. если я не ошибаюсь, приведенная картинка не имеет альфаканала.. Общая картинка нет, а pixmap шарика с альфа-каналом. В общем как я и просил выше нужен материал с которым можно работать - компилируемый пример с проблемой. Писать свой видео-плеер с такими кнопочками времени нет ни у кого. Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: Kolobok от Января 25, 2010, 19:22 А что мешает сделать фон прозрачным? если Вы имеете ввиду, в paintEvent'е сначала залить область Qt::transparent, а затем на ней рисовать QPixmap, то результат не меняется.. Нет, я имел ввиду следующее... Код: label->setPixmap( ... ); Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 26, 2010, 11:30 Помогло тупо выставление setAutoFillBackground(false) для самой QLabel и для видгета, на который она выводилась..
Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 26, 2010, 11:47 А нет, не помогло.. ) Оказывается, при отображении над объектом типа QWidget альфаканал действительно работает, но при отображении картинки поверх видео он игнорируется.. Похоже, просто извращениями с Qt тут не обойтись.. )
Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: SABROG от Января 26, 2010, 12:44 А нет, не помогло.. ) Оказывается, при отображении над объектом типа QWidget альфаканал действительно работает, но при отображении картинки поверх видео он игнорируется.. Похоже, просто извращениями с Qt тут не обойтись.. ) Видео через phonon выводится? Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 26, 2010, 13:53 через DirectShow
Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: SABROG от Января 26, 2010, 14:22 через DirectShow Имхо с этого и надо было начинать. Окно DirectShow не Qt'шное ведь? Тут максимум что можно попытаться сделать - создать top level widget с флагом Qt::FramelessWindowHint и рисовать на него свою картинку с альфаканалом. Не факт, что будет работать, но попробовать можно. Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 26, 2010, 14:41 Имхо с этого и надо было начинать. Окно DirectShow не Qt'шное ведь? Тут максимум что можно попытаться сделать - создать top level widget с флагом Qt::FramelessWindowHint и рисовать на него свою картинку с альфаканалом. Не факт, что будет работать, но попробовать можно. Qt'шное, но альфаканал на нем все равно почему-то не работает..Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: SABROG от Января 26, 2010, 15:00 Qt не умеет создавать DirectShow окна, только phonon.
Название: Re: Корректное отображение картинки с альфаканалом на виджете Отправлено: pitekantrop от Января 26, 2010, 16:13 Qt не умеет создавать DirectShow окна, только phonon. создаем мы и вставляем в объект типа QMdiSubWindow, растянутое на весь экран |