QGraphicsItem的坐标机制

Item坐标系的x轴、y轴、原点的关系跟Scene一样。在QGraphicsItem中有几个重要的函数,分别是 boundingRect() shape() paint() ,这函数绘图都是基于Item的坐标系,着重强调,基于的原点是Item坐标系的原点,使用 paint() 来绘制Item时需要注意。而Item坐标系的原点又是一个大坑。
在Scene使用 addItem() 添加Item时,添加的Item的坐标系原点默认在画面的中央,可以调用 setPos(x,y) 函数来重设Item坐标系原点,这时Item坐标系原点处于设置的x、y处。

QGraphicsItem的重绘

Item的重绘可以在Scene中调用 Invalidate(flag) 来重绘Item层,也可以在Item中调用 update() 。此时的重绘会发生在 boundingRect() 函数返回的矩形区域中,同时这个矩形区域也是响应事件的区域,在没有重载 shape() 的情况下还会用于碰撞检测。
使用 prepareGeometryChange() 函数可以修改 boudingRect() 返回的矩形区域大小,同时还会根据情况来重绘视图。

动画实现tip