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秒內擴大到了一圈。這段代碼給我的是一個出現在左上角的點,然後增長並同時移動到中間。我試圖通過設定每一步的位置來進行補償,但這似乎相當複雜。有一個更乾淨的方式來做到這一點。
此外,原始項目在動畫開始之前顯示爲一秒,有沒有什麼辦法可以隱藏它,然後顯示動畫?
在此先感謝。
這樣做。謝謝! – JCL 2009-05-28 14:24:57