2009-05-28 6 views
2

QGraphicsItemAnimationのsetScaleAt関数がどのように機能するのか理解できません。ここで私が使用しているコードです:Qtアニメーション

QGraphicsItem *item=scene.addEllipse(400, 300, 100, 100, QPen(), QBrush(Qt::SolidPattern)); 
    QTimeLine *timeline=new QTimeLine(3000); 
    timeline->setFrameRange(0, 100); 
    QGraphicsItemAnimation *animation=new QGraphicsItemAnimation; 
    animation->setItem(item); 
    animation->setTimeLine(timeline); 
    for (int i=0; i<100; i++) { 
     animation->setScaleAt(i/100.0, i/100.0, i/100.0); 
    } 
    connect(timeline, SIGNAL(valueChanged(qreal)), animation, SLOT(setStep(qreal))); 
    timeline->start(); 

が、私はそれがやりたいすべては、それが3秒かけて円に拡大してきた、画面の中央にドットが表示されています。このコードが私を得るのは、左上隅に表示され、次に成長し、同時に中央に移動する点です。私は各ステップでポジションを設定することによって補正しようとしましたが、これはかなり畳み込まれているようです。これを行うにはよりクリーンな方法が必要です。

また、元のアイテムはアニメーションが開始する前に1秒間表示されます。デフォルトで非表示にする方法はありますか?

ありがとうございます。

答えて

3

これは、変換の起点がアイテムの左上隅にあるためです。代わりにaddEllipse(-50、-50,100,100)のようなものを使用して、原点が中央にくるようにする必要があります。もちろん、あなたはそれが理にかなった場所にアイテムを配置する必要があります。

+0

これはそのトリックでした。ありがとう! – JCL

関連する問題