crossplatform.ru

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

> эффект мерцающих звёзд
efg
  опции профиля:
сообщение 4.6.2011, 20:36
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 6.5.2011
Пользователь №: 2658

Спасибо сказали: 2 раз(а)




Репутация:   0  


есть статичное изображение. нужно изменить заданную область - в моём случае небо - так, чтобы казалось, что это анимация (смазать, размыть, может быть, так, что коэффициенты рассчитываются случайно) и нарисовать (несколько раз в секунду, конечно). в какую сторону копать? нужно учить opengl? или можно обойтись средствами qpainter? есть ли готовые примеры, или хотя бы что-то похожее?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
ufna
  опции профиля:
сообщение 6.6.2011, 2:05
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


задача делится на три части:

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

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

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

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

эффект блюра - алгоритм простой, на QPainter без проблем делается.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
efg
  опции профиля:
сообщение 6.6.2011, 10:25
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 6.5.2011
Пользователь №: 2658

Спасибо сказали: 2 раз(а)




Репутация:   0  


нашёл, вот:
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
что я делаю не так?

Сообщение отредактировал efg - 7.6.2011, 0:06
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- efg   эффект мерцающих звёзд   4.6.2011, 20:36
- - Litkevich Yuriy   Цитата(efg @ 4.6.2011, 23:36) нужно измен...   4.6.2011, 20:54
|- - efg   Цитата(Litkevich Yuriy @ 4.6.2011, 21:54)...   4.6.2011, 21:16
- - Алексей1153   efg, какие будут использованы примитивы (точки, ли...   5.6.2011, 12:25
|- - efg   Цитата(Алексей1153 @ 5.6.2011, 13:25) efg...   5.6.2011, 14:01
- - Litkevich Yuriy   на языке крутится blur (по-моему пример такой был,...   5.6.2011, 17:23
- - Алексей1153   >>ответьте по существу - вопросы в первом по...   5.6.2011, 17:23
|- - efg   Цитата(Алексей1153 @ 5.6.2011, 18:23) ...   6.6.2011, 1:23
- - Litkevich Yuriy   Цитата(Алексей1153 @ 5.6.2011, 20:23) буд...   5.6.2011, 17:28
- - Алексей1153   странный вопрос. Будет выдавать новое значение изм...   5.6.2011, 17:33
- - ufna   а можно как-то конкретизировать задачу или привест...   5.6.2011, 17:40
- - Алексей1153   >>или привести пример и желательно на видео ...   5.6.2011, 17:46
- - ufna   задача делится на три части: 1. выделение области...   6.6.2011, 2:05
|- - efg   нашёл, вот: http://doc.qt.nokia.com/qq/32/qq32-nex...   6.6.2011, 10:25
- - Litkevich Yuriy   Цитата(Алексей1153 @ 5.6.2011, 20:33) Но ...   6.6.2011, 7:30
- - efg   работает, только если применить эффект ко всему ви...   6.6.2011, 12:29


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.4.2024, 0:29