Текущий QGraphicsPixmapItem в качестве фона
Я пытаюсь реализовать плавный фоновый элемент для моей сцены (так же, как flappy bird)
Form::Form(QWidget *parent) : QMainWindow(parent), ui(new Ui::Form)
{
ui->setupUi(this);
showMaximized();
background = new QGraphicsPixmapItem();
background->setPixmap(QPixmap::fromImage(QImage("..//Game//images//background.jpg")));
scene = new QGraphicsScene();
ui->view->setScene(scene);
scene->addItem(background);
timer = new QTimer();
connect(timer, SIGNAL(timeout()), this, SLOT(timerTick()));
timer->start(1);
}
// ...
void Form::timerTick()
{
background->moveBy(-0.2, 0);
}
Очевидная проблема в том, что предмет исчезает через некоторое время. Я хочу перерисовать и поддерживать поток сцены, когда период заканчивается. Как я мог это сделать?
Я пытался изменить пиксель элемент изображения за пикселем, но это было слишком медленно.
заранее спасибо
1 ответ
Я предлагаю другой подход к вашей проблеме:
У вас может быть большой фон, содержащий все уровни, например. Хитрость заключается в том, чтобы расширить фоновое изображение размером с вид, для летающих птиц, у которых фиксированная высота:
background_width + screen_width
Вы можете создать этот расширенный фон в памяти вашего изображения.
Затем вы можете использовать для навигации по вашему изображению:
void QPixmap::scroll ( int dx, int dy, const QRect & rect, QRegion * exposed = 0 )
И установите растровое изображение QGraphicsPixmapItem с помощью:
void QGraphicsPixmapItem::setPixmap ( const QPixmap & pixmap )
Достигнув конца фона, вы просто перепрыгиваете в соответствующую позицию в начале растрового изображения.
В заключение, ваш QGraphicsPixmapItem никогда не перемещается, но соответствующая QPixmap извлекается из расширенного фона.
Изменить: добавлена схема