3

「ScaleAnimation」を実装する適切な方法を探していました。私の目的は、QImageをアニメーション化することです。

    timeline = new QTimeLine(time);
    timeline->setFrameRange(0, 100);
    animation = new QGraphicsItemAnimation;

    QRectF rect = item->boundingRect();
    int h = rect.bottom() - rect.top();
    int w = rect.right() - rect.left();


    animation->setItem(item);
    animation->setTimeLine(timeline);


    for (int i = 0; i < 100; i++) {
            int x = w + (int)((float)w*(float)(i/100.0));
            qreal xx = (qreal)(x)/(qreal)w;
            int y = (h) + (int)((float)h*(float)(i/100.0));
            qreal yy = (qreal)(y)/(qreal)h;          
            animation->setScaleAt(i/100, xx, yy);
    }

動作しているようですが、アニメーションの原点は(0, 0)。でアニメーションを適用する方法はあります(w/2, h/2)か?アニメーションを書き直すためのより良い、より効率的な(または正しい)方法はありますか?私はQtの世界でnewbeeをやめました。

お待ちいただいてありがとうございます。

4

1 に答える 1

0

QGraphicsPixmapItemを使用している場合は、オフセットを中点に設定し、同じ量だけ移動して、オフセット設定の影響に対抗します。

const QSizeF size = item->boundingRect().size()*0.5;
item->setOffset(size.width(), size.height());
item->moveBy(size.width(), size.height());
于 2012-06-18T11:14:17.590 に答える