以下程式碼節錄至QT - chap 11
void CannonField::moveShot()
{
QRegion r( shotRect() ); // 建立一個炮彈的region
timerCount++;
QRect shotR = shotRect();
if ( shotR.x() > width() || shotR.y() > height() )
autoShootTimer->stop();
else
r = r.unite( QRegion( shotR ) ); // 取聯集
repaint( r );
}
首先我們使用QRegion來保留舊的shotRect()。QRegion可以保留任何種類的區域(我想也可以包含圖片吧),並且我們可以用它來簡化繪畫過程。
而之後,我們會針對兩個region來分析是否有碰撞到。
沒有留言:
張貼留言