因此,透過scale可以放大縮小整個圖的某一個元件。
在每一個GraphicsItem都有一個自己的座標系統,而放大縮小與旋轉都是依自己的座標系統的原點來決定的。
例如以下的程式碼:
QGraphicsEllipseItem *ball = new QGraphicsEllipseItem(0,0,30,30);
就是建立一個直徑為30pixel的圓,且其左上角剛好在自已的座標系統的(0,0)
若這個時候用放大的話,會依原點放大,所有,它會往右下角放大
QGraphicsEllipseItem *ball = new QGraphicsEllipseItem(-15,-15,30,30);
這個因為設定圖的左上角是在此小座標系統的(-15,-15),所以,(0,0)剛好是在圖的球心,這個時候放大,就會根據原點放大~
而把這一個放到QGraphicsScene的(0,0),則要在QGraphicsScene的函數中
MyScene::MyScene(qreal x,qreal y,qreal width,qreal height,QObject *parent):QGraphicsScene(x,y,width,height,parent) {
QGraphicsEllipseItem *ball = new QGraphicsEllipseItem(-15,-15,30,30);
addItem(ball); // 把這一個圓加入此QGraphicsScene中
ball->setPos(this->width()/2,this->height()/2); // 設定球的小座標系統的左上角落在QGraphicsScene的(width()/2,this->height()/2)這一個位置
}
沒有留言:
張貼留言