Здравствуйте, гость ( Вход | Регистрация )
Rocky | Дата 12.4.2010, 11:21 |
Все как-то очень странно... 1. в paintEvent добавил QPainter::setOpacity(...); 2. this->setWindowFlags(Qt::Window | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); заменил на this->setWindowFlags(this->windowFlags() | Qt::WindowStaysOnTopHint); 3. В качестве parentWidget указал класс, производный от QMainFrame (т.е. самый главный), а не 5-й производный от него... И вот так все работает... Нифига не понял в чем фишка.. Но факт на лицо =) ЗЫ. А с gif-ом лучче вообще не заморачиваться. Хотя срок патента на него вроде как истек, но качество у него не супер. Плюсь в qt все-таки он как-то оч непонятно поддерживается. Лучче тогда уж юзать mng - это анимированный png. И качество неплохое, и поддержка есть (тока в линуксе нужно специально компилить еще плагин qmng). Откопал прогу, называется PNG/MNG Construction Set. Оч легкая в освоении. ЗЗЫ. SABROG, спасибо еще раз за ImageMagic - пока ее искал нашел вот этот "PNG/MNG Construction Set". |
|
Rocky | Дата 12.4.2010, 9:49 |
Пробовал... я уже думаю может дело вот в этой строке
Думаю как бы проверить.... потому что этот виджет на котором все рисуется должен быть поверх главного окна.... и если флаги не ставить, то его не видно вообще ( UPD Неа, не похоже что в ней |
|
Litkevich Yuriy | Дата 12.4.2010, 9:39 |
может дело в самой картинке? Ты пробовал картинку из "бабы"? | |
Rocky | Дата 12.4.2010, 9:19 |
Чето вообще непонятно ничего =( Вот тут шла речь о отрисовке изображения поверх виджетов. В частности была написана такая вот функция для отрисовки кадра анимации mng:
Если скомпилить пример baba, то каждый кадр анимации рисуется на прозрачном фоне. Как так получается? Никаких setMask ничего такого.... Я пишу так:
и нифига.... Все рисуется на каком-то дурацком бело-бежевом квадрате.... Как так? =( |
|
Rocky | Дата 8.4.2010, 23:13 |
Да, я уже читал, пасиб) Щас более внимательно еще раз посмотрю. Жаль что в линуксе не работает... как раз именно он и нужен =( Тут где-то еще пример был как рисовать поверх всех, так там была тетка танцующая... файл *.mng. Может в эту сторону тоже покопать. Тока что это за формат такой.... Полез в википедию... |
|
igor_bogomolov | Дата 8.4.2010, 22:58 |
Может забабахать все картинки в какой-нить gif? Но как его отображать с учетом прозрачности тогда? маска ведь своя для каждого кадра... Я когда то делал такой эксперимент с gif-ом. Там ты найдешь как это делается с использованием гиф-анимации. Но самое печальное, что тот пример работает тоже только под Windows. Что мешает работать под Linux не знаю, не разбирался. Может в выходные попробую ещё по экспериментировать. |
|
Rocky | Дата 8.4.2010, 22:45 |
Всем привет! Помогите пожалуйста разобраться с проблемкой. В программе нужно сделать определенную анимацию. И требуется, чтобы эта анимация как бы пробегала по основной программе (вот как пример это всякие зверушки/девушки/помощники на рабочем столе). У меня бегающий дядя )). Я сделал виджет, в котором переопределил paintEvent. Далее задал этому виджету последовательность картинок *.png (с прозрачностью) и в таймере меняю счетчик кадров картинок (т.к. мужик бежит), затем вызываю метод repaint(). В самом обработчике paintEvent() я вызываю clearMask и затем setMask и после этого рисую новый кадр. В виндовсе вроде как нареканий нет никаких... только разве что медленно отрисовывает (виджет не успевает обрезаться по маске - ну это терпимо)... А в линуксе большие траблы ( При каждой перерисовке у меня мигает черный прямоугольник размером с весь виджет.. и из-за чего он возникает и как его убрать непонятно (. Помогите советом, как можно решить проблему? Может забабахать все картинки в какой-нить gif? Но как его отображать с учетом прозрачности тогда? маска ведь своя для каждого кадра... Или есть еще какие-нить анимированные форматы такие, в которые можно было бы без проблем перегнать png и qt бы их поддерживал? Спасибо! PS. Вот кусок кода как я делаю.
Сигнал movieFinished соединен со слотом начала анимации (останов таймера у которого слот OnTimer, установка счетчика на 1-й кадр, запуск таймера) |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 8:56 |