当QBrush设置了pattern后,QPainter设置brush,当缩放时,如果不对brush作处理,则brush的pattern也会缩放,效果不是太好,QBrush的transform会和QPainter的transform复合的,因此可以在paint函数里更新QBrush的transform或matrix,如下
void Item::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
auto lod = option->levelOfDetailFromTransform(painter->worldTransform());
QMatrix matrix;
auto scale_factor = 1.0 / lod;
this->brush.setMatrix(matrix.scale(scale_factor , scale_factor))
painter->save();
painter->setBrush(this->brush);
painter->restore();
}