如果可能的话动画QPixmap?在我的程序中我有一个QPixmap(超级马里奥的图像)。我想动画它。我的意思是它应该前进和跳跃。我很难再设计超级马里奥的形状并且更喜欢使用图像。
#ifndef MYQGRAPHICOBJECT_H
#define MYQGRAPHICOBJECT_H
#include <QGraphicsObject>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsRectItem>
#include <QPixmap>
#include <QPropertyAnimation>
extern QPixmap super;
class MyQgraphicObject : public QGraphicsObject
{
Q_OBJECT
private:
QPropertyAnimation* pro;
QPixmap pi;
public:
explicit MyQGraphicObject(QGraphicsItem *parent = 0,QPixmap p= super);
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
QRectF boundingRect()const;
signals:
public slots:
};
#endif // MYQGRAPHICOBJECT_H
#include "myqgraphicobject.h"
#include <QGraphicsItem>
MyQGraphicObject::MyQGraphicObject(QGraphicsItem *parent, QPixmap p) :
QGraphicsObject(parent),pi(p)
{
pro=new QPropertyAnimation();
}
QRectF MyQGraphicObject::boundingRect() const
{
}
答案 0 :(得分:2)
我有一些与精灵表相同的代码。 它解释了here
基本上,你用精灵的大小和位置绘制图片
mSpriteImage = new QPixmap(":dragon.png");
painter->drawPixmap ( mPos.x(),mPos.y(), *mSpriteImage,
mCurrentFrame, 0, 100,100 );
并在计时器上,你改变了精灵的位置。
void Sprite::nextFrame()
{
//following variable keeps track which
//frame to show from sprite sheet
mCurrentFrame += 100;
if (mCurrentFrame >= 500 )
mCurrentFrame = 0;
mPos.setX( mPos.x() + 10 );
}