【发布时间】:2015-08-11 13:17:55
【问题描述】:
我一直在用 Qt 中的圆圈进行物理模拟。到目前为止,我发现定义圆的最简单方法是制作一个QRect 对象,然后用该矩形绘制椭圆作为“蓝图”。现在我遇到了一个问题,它画了一个圆圈,但命中检测的命中框仍然是一个正方形,看起来很尴尬。到目前为止我还没有找到解决方案,希望在这里找到一些帮助。
QRectF Ball::boundingRect() const
{
return QRect(0,0,20,20);
}
void Ball::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
QRectF rec = boundingRect();
QBrush Brush(Qt::gray);
//basic Collision Detection
if(scene()->collidingItems(this).isEmpty())
{
//no collision
Brush.setColor(Qt::green);
}
else
{
//collision!!!!!
Brush.setColor(Qt::red);
//Set position
DoCollision();
}
//painter->fillEllipse(rec,Brush);
painter->drawEllipse(rec);
}
【问题讨论】:
标签: c++ qt collision-detection qpainter