crossplatform.ru

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


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

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

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


Последние 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 Текстовая версия Сейчас: 23.5.2022, 23:04