为什么Qt在处理小型QGraphicsItem时遇到问题

时间:2012-12-02 16:16:13

标签: c++ qt graphics 2d

当我定义几个尺寸较小的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似乎比小物体快得多。 是否有关于推荐图形尺寸的一般指导原则以及此效果来自何处?

0 个答案:

没有答案