当我定义几个尺寸较小的QGraphicsitems时,例如将度量线直接转换为具有相同长度(例如几米)的QGraphicLineItem,整个redering系统变得非常慢,甚至容易崩溃。另一方面,当项目更大" (长度> 100)没有问题出现。
给出一个更具体的例子:我使用以下代码将QGraphicItems转换为pixmap。
QGraphicsPixmapItem* transformToPixmapItem(std::vector<QGraphicsItem>& items,int maxRes){
QRectF boundingRect;
boostForeach(QGraphicsItem* pItem,items) {
boundingRect = boundingRect.united(pItem->boundingRect());
}
QSize size(boundingRect.size().toSize());
double const scale = std::min(16.0,double(maxRes)/boundingRect.size().width());
QPixmap pixmap(size*scale);
pixmap.fill(Qt::transparent);
QPainter p(&pixmap);
//p.setCompositionMode( QPainter::CompositionMode_Source );
p.translate(-boundingRect.topLeft()*scale);
p.scale(scale,scale);
QStyleOptionGraphicsItem opt;
boostForeach(QGraphicsItem* item,items) {
item->paint(&p, &opt, 0);
}
p.end();
deleteVector(items);
QGraphicsPixmapItem* item = new QGraphicsPixmapItem(pixmap);
item->setScale(1.0/scale);
item->setOffset(boundingRect.topLeft()*scale);
qDebug() << "Pixmap done. 1/Scale " << 1.0/scale;
return item;
}
On&#34;更大&#34;这个项目在它碰撞的小物品上工作正常,条件似乎是1 /比例。如果用于缩小生成的pixmap项目的此值太小,则函数完成但结果项目的呈现崩溃。 除此之外,如已经陈述的那样,物理尺寸已被增大的物体的渲染,例如,因子100似乎比小物体快得多。 是否有关于推荐图形尺寸的一般指导原则以及此效果来自何处?