0
我們項目的主題是製作一個模擬Fusion的程序。將複數形式綁定到矩形?
我們遇到了與我們類別融合相撞的問題。我們想爲我們的碰撞做一個複雜的形狀。
我們的形狀接近彼此的兩個圈,我們不希望有一個邊界矩形,但塑造的「複雜」 ......
這是我們的融合類
Fusion::Fusion(int x, int y)
{
this->setPos(x, y);
}
void Fusion::shape(){
//...
}
void Fusion::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
//set the color
QBrush brushColor(QColor(Qt::blue));
painter->setBrush(brushColor);
painter->setPen(QColor(Qt::blue));
painter->drawEllipse(0,0,40,40);
painter->drawEllipse(-20,-20,40,40);
}
void Fusion::doCollision()
{
// get a new position
// change the angle with randomness
if(qrand() %1)
{
setRotation(rotation() + (180 + (qrand() % 10)));
}
else
{
setRotation(rotation() + (180 + (qrand() % -10)));
}
// check if the new position is in bounds
QPointF newPoint = mapToParent(-(boundingRect().width()), -(boundingRect().width() + 2));
if(!scene()->sceneRect().contains((newPoint)))
{
// move back in bounds
newPoint = mapToParent(0,0);
}
else
{
// set the new position
setPos(newPoint);
}
}
void Fusion::advance(int step)
{
if(!step) return;
if(!scene()->collidingItems(this).isEmpty())
{
doCollision();
}
setPos(mapToParent(0, -1));
}
嗨,謝謝你的幫助!但有了這個,我們是一個屏幕截圖 - > [bugScreen](http://i.imgur.com/P5ib3lL.png)。 Idk如果因爲shape()...對這個bug有任何想法嗎? –
圖片表明您的boundingRect或形狀函數不準確,或者在影響這些方法的結果的某些操作之前未能調用prepareGeometryChange。當發生這種情況時,您會看到繪製工件,因爲舊區域未被正確清除。 – goug