Название: компонент timeline Отправлено: gavlig от Август 18, 2011, 23:18 Всем привет! Очень нужна помощь в виде советов и пожеланий :)
Надо написать компонент для просмотра видеоархивов. Должен он в реальном времени отслеживать положение видео на "временной линии", то есть рисовать надо будет много и часто. Первая моя попытка была с использованием пополам QPainter'a и чистого OpenGL api, но в результате криворукости компонент не хило жрёт проц во время проигрывания. Сейчас решил ещё раз подумать над реализацией в целом. Попробовал QGraphicsView со всеми вытекающими и QGLWidget в качестве viewport'a, написал маленькую демку, рисующую линейку в пределах и за пределами вьюпорта, чтобы её можно было потягать. .cpp http://paste.org.ru/?51huds .h http://paste.org.ru/?0lyk0v Так вот эта простенькая штука жрёт до десяти процентов от интеловского 2.4 code2 duo при наличии nvidia 9600 с блобом. Теперь вопрос, есть ли возможность заставить QGraphicsView не есть лишних ресурсов на скролле или таки надо заняться велосипедостроением и пилить всё самому(под пилением подразумевается оптимизация старого уже набыдлокоденного)? картинки прилагаются вот первый вариант компонента http://piccy.info/view3/1874267/e4e5fbdebaa28663a15b39b70c7827ec/orig/ вот демка, сырцы которой в первом посте http://piccy.info/view3/1874285/4eed11eface4e0ec7f197b33a6296d32/orig/ Отсылкам на любые примеры или доки буду неописуемо рад :) Название: Re: компонент timeline Отправлено: Mikhail от Август 19, 2011, 11:05 Никаких ужасных трмозов не ощутил. Процессор до 3 процентов при протяжке. У меня комп по слабее существенно.
Вообще то, желательно шкалу отрисовать в фоне. В уачестве ползунка можно использовать QGraphicsLineItem, вернее класс на его основе, в котором переопределить shape () и boundingRect () Название: Re: компонент timeline Отправлено: gavlig от Август 19, 2011, 11:20 не понял про отрисовки шкалы в фоне.. А где я отрисовываю? Ползунок мне не нужен, таймлайн должен тягаться при зажатой кнокпе мыши. Может вместо скроллинга как-то по-другому передвигать вьюпорт?
Название: Re: компонент timeline Отправлено: _OLEGator_ от Август 21, 2011, 11:00 Однозначно рисовать самому, то что вы делаете (формируете изображение из отдельных QGraphicsLineItem) - это мягко говоря извращение.
Нужно унаследоваться от QWidget и переопределить paintEvent. Сам рисовал все эти шкалы, никаких торомозов не должно быть даже без использования OpenGL. Название: Re: компонент timeline Отправлено: gavlig от Август 22, 2011, 12:18 Именно по такому пути я и пошёл изначально. :) Только вместо QWidget -> QGLWidget.
Название: Re: компонент timeline Отправлено: spirits25 от Октябрь 18, 2012, 15:17 У кого-нибудь есть рабочий пример timeline. необходима бесконечно прокручивающаяся полоса для прокрутки даты. Можете подсказать по этому поводу?
Название: Re: компонент timeline Отправлено: panAlexey от Октябрь 19, 2012, 16:32 Однозначно рисовать самому, то что вы делаете (формируете изображение из отдельных QGraphicsLineItem) - это мягко говоря извращение. +1Нужно унаследоваться от QWidget и переопределить paintEvent. Тормозов при отрисовке линий и не будут.Сам рисовал все эти шкалы, никаких торомозов не должно быть даже без использования OpenGL. Тормоза восновном идут при отрисовке строк. Название: Re: компонент timeline Отправлено: panAlexey от Октябрь 19, 2012, 16:35 У кого-нибудь есть рабочий пример timeline. необходима бесконечно прокручивающаяся полоса для прокрутки даты. Можете подсказать по этому поводу? Это достаточно просто. В чем проблема?Ползунок настрить? :) Название: Re: компонент timeline Отправлено: _OLEGator_ от Октябрь 19, 2012, 16:39 Тему годовой давности решили поднять?
to panAlexey: Тормозов вообще не будет, если правильно отрисовывать только видимую информацию, а ее тут кот наплакал. Название: Re: компонент timeline Отправлено: spirits25 от Октябрь 19, 2012, 16:48 У кого-нибудь есть рабочий пример timeline. необходима бесконечно прокручивающаяся полоса для прокрутки даты. Можете подсказать по этому поводу? Это достаточно просто. В чем проблема?Ползунок настрить? :) Название: Re: компонент timeline Отправлено: panAlexey от Октябрь 21, 2012, 21:26 Тему годовой давности решили поднять? если про "тут" то согласен.to panAlexey: Тормозов вообще не будет, если правильно отрисовывать только видимую информацию, а ее тут кот наплакал. Название: Re: компонент timeline Отправлено: panAlexey от Октябрь 21, 2012, 21:41 У кого-нибудь есть рабочий пример timeline. необходима бесконечно прокручивающаяся полоса для прокрутки даты. Можете подсказать по этому поводу? Это достаточно просто. В чем проблема?Ползунок настрить? :) если на словах, то у тебя есть грубо отрезок А--------Б--------С----------->Д первоначальная длина АД, область видимости на экране БС. БС может меняться в зависимости от ширины окна. ты двигаешь БС, если оно наезжает на Д просто приращиваешь Д, если на А - уменьшаешь А. получается бесконечная прокрутка. Рисуешь все опираясь на разницу Б-А - получается точка отсчета для паинтера. "с изменением даты в шапке." - тут уже кто как предпочитает, можно привязать дату к Б (привычный порядок). но удобнее к середине отрезка БС. это типа я описал какие переменные нужны. или требовалось что-то еще? Название: Re: компонент timeline Отправлено: spirits25 от Октябрь 22, 2012, 10:52 Если всё так просто, почему никто не может минимальный пример дать? или никто такого не писал? я с рисованием не дружу.
Название: Re: компонент timeline Отправлено: Bepec от Октябрь 22, 2012, 12:18 Потому что это простейшая арифметика. Если Курсор >= ВидимыйКонец тогда двигай. И обратно. PanAlexey чётко и понятно описал.
Или вас озадачивает именно процесс рисования? Если он - то я могу вам накидать проектик (кривой по рисункам, ибо не художник, но без логики) :) PS QэээSlider вам чем не подходит? идеальный же кандидат :) Название: Re: компонент timeline Отправлено: spirits25 от Октябрь 22, 2012, 12:26 Да, меня озадачивает сам процесс рисования=) я понял смысл, ЧТО нужно делать, но мне бы минимальный простой пример КАК=)
Название: Re: компонент timeline Отправлено: panAlexey от Октябрь 22, 2012, 12:33 Если всё так просто, почему никто не может минимальный пример дать? или никто такого не писал? я с рисованием не дружу. Все могут. Но не у всех есть время и желание.Жди профессионального альтруиста. Название: Re: компонент timeline Отправлено: Bepec от Октябрь 22, 2012, 15:29 НЕ лучший код.
НЕ оптимизированная программа. НЕ нерабочая программа. Но если есть желание и умение оценить чужой труд, то прошу в архив. PS pro файл внутри, для любителей QtCreator. Название: Re: компонент timeline Отправлено: spirits25 от Октябрь 22, 2012, 15:54 НЕ лучший код. НЕ оптимизированная программа. НЕ нерабочая программа. Но если есть желание и умение оценить чужой труд, то прошу в архив. PS pro файл внутри, для любителей QtCreator. Большое спасибо, сейчас посмотрю. только вот комменты на кириллице, сохранённые в cp1251 сразу громко сказали о себе=) Посмотрел, всё отлично=) главное я понял как вообще это делать, теперь сделаю то, что хотел. Спасибо!=) Название: Re: компонент timeline Отправлено: Bepec от Октябрь 22, 2012, 16:25 Комменты, сделанные виндузятником под виндой в виндовской кодировке явно говорят о виндовсе :)
В заголовок темы РЕШЕНО пихни ) |