crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в эффект мерцающих звёзд
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
efg Дата 6.6.2011, 12:29
  работает, только если применить эффект ко всему виджету... boundingRectFor(rect) не учитывается почему-то
efg Дата 6.6.2011, 10:25
  нашёл, вот:
http://doc.qt.nokia.com/qq/32/qq32-next-gen-uis.html
http://doc.qt.nokia.com/4.7/qgraphicsblureffect.html

Quiet.h:
#ifndef QUIET_H
#define QUIET_H

#include <QtGui>

class quiet : public QWidget {
    Q_OBJECT

public:
    quiet(QWidget *parent = 0);
    ~quiet();
    void paintEvent(QPaintEvent *event);
private:
    QImage image;
    QPixmap pixmap;
    QGraphicsBlurEffect effect;
    QGraphicsPixmapItem pixmapItem;
    QTimer *timer;
private slots:
    void reDraw();
};

#endif // QUIET_H


Quiet.cpp:
#include "quiet.h"

quiet::quiet(QWidget *parent) : QWidget(parent) {
    setWindowTitle("Quiet");
    resize(640, 480);
    setMaximumSize(640, 480);
    setMinimumSize(640, 480);
    image.load(":/images/pic.png", "png");
    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(reDraw()));
    timer->start(100);
    repaint();
}

quiet::~quiet() {
}

void quiet::paintEvent(QPaintEvent *event) {
    QPainter painter(this);
    QPoint point;
    point.setX(0);
    point.setY(0);
    //painter.drawImage(point, image);
    painter.drawPixmap(point, pixmap);
}

void quiet::reDraw() {
    pixmap.fromImage(image, Qt::AutoColor);
    pixmapItem.setPixmap(pixmap);
    effect.setBlurRadius(0.1); // случайные значения сюда
    pixmapItem.setGraphicsEffect(&effect);
    repaint();
}


не только ничего не рисуется, так ещё и при закрытии окна вылезает appcrash
что я делаю не так?
Litkevich Yuriy Дата 6.6.2011, 7:30
 
Цитата(Алексей1153 @ 5.6.2011, 20:33) *
Но из первого поста это неочевидно
Цитата(efg @ 4.6.2011, 23:36) *
это анимация (смазать, размыть,
по-моему всё очевидно
ufna Дата 6.6.2011, 2:05
  задача делится на три части:

1. выделение области
2. подготовка нескольких изображений
3. смена их по событию таймера

1 думаю решена

2 и 3 взаимосвязаны. применять эффекты к области - дело муторное. проще - берешь баундинг бокс этой области, и применяешь эффект к нему. область работает как маска. после чего, по событию таймера, рисуешь по маске нужное изображение.

все средствами QPainter реализуется.

эффект блюра - алгоритм простой, на QPainter без проблем делается.
efg Дата 6.6.2011, 1:23
 
Цитата(Алексей1153 @ 5.6.2011, 18:23) *
>>ответьте по существу - вопросы в первом посте

я ответил на САБЖ
>>эффект мерцающих звёзд

и никто не виноват, что ты не умеешь вопрос задавать. А какой вопрос - такой и ответ :)

Цитата(efg @ 4.6.2011, 21:36) *
в какую сторону копать? нужно учить opengl? или можно обойтись средствами qpainter? есть ли готовые примеры, или хотя бы что-то похожее?

в вашем посте не было ни слова ни про opengl, ни про иные средства, с помощью можно достичь желаемого эффекта. поправьте меня, если это не так.

Цитата(Алексей1153 @ 5.6.2011, 18:23) *
>>уж не стал бы я делать цикл while... sleep
цикл тут ни при чём, я про таймер говорил

а я имел в виду, что использование таймера очевидно

Цитата(ufna @ 5.6.2011, 18:40) *
а можно как-то конкретизировать задачу или привести пример?

пусть дано изображение

и задана область

применяем к области искажение\размытие (не обязательно блюр - скорее, даже, блюр как раз и не подойдёт - лучше что-нибудь вроде "волн") и получаем


для любителей интерактива примитивная гифка:
Алексей1153 Дата 5.6.2011, 17:46
  >>или привести пример
и желательно на видео ))
ufna Дата 5.6.2011, 17:40
  а можно как-то конкретизировать задачу или привести пример?
Алексей1153 Дата 5.6.2011, 17:33
  странный вопрос. Будет выдавать новое значение изменяемого параметра

Нет, если тема про блюр - то пожалуйста, пусть это будут встроенные эффекты. Но из первого поста это неочевидно
Litkevich Yuriy Дата 5.6.2011, 17:28
 
Цитата(Алексей1153 @ 5.6.2011, 20:23) *
будет функция от времени некоего параметра
и что она будет делать?
Алексей1153 Дата 5.6.2011, 17:23
  >>ответьте по существу - вопросы в первом посте

я ответил на САБЖ
>>эффект мерцающих звёзд

и никто не виноват, что ты не умеешь вопрос задавать. А какой вопрос - такой и ответ :)

Но всё равно всё выйдет так, как я описал - будет функция от времени некоего параметра.

>>уж не стал бы я делать цикл while... sleep
цикл тут ни при чём, я про таймер говорил
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 13:05