旋转QGraphicsPixmapItem会导致质量极低的质地

时间:2013-04-03 13:37:19

标签: qt qgraphicsview qgraphicsscene qpixmap

我正在使用QGraphicsScene和QGraphicsView来显示QGraphicsPixmapItem。

每当我将物品旋转90度,180度,270度以外的任何物体时,纹理都会以极低的质量显示。图像1显示原始纹理(0°旋转),2显示项目旋转了45°。

我使用以下代码显示和旋转项目:

QGraphicsPixmapItem *item = new QGraphicsPixmapItem(QPixmap("button.png"));
scene->addItem(item);

item->setTransformOriginPoint(70, 70); // button.png is 140px x 140px
item->setRotation(45);

使用

view->setRenderHints(QPainter::Antialiasing);

view->setRenderHints(QPainter::SmoothPixmapTransform);

没有什么区别。

有没有办法获得更高质量的质地?

Original 45degree

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我找到解决这个问题的唯一方法是重新实现QGraphicsItem :: paint()并应用标志QPainter :: Antialiasing | QPainter :: SmoothPixmapTransform给画家。

像这样:

void Rocket::paint(QPainter *painter,
                   const QStyleOptionGraphicsItem *option,
                   QWidget *widget)
{
  painter->setRenderHints( QPainter::Antialiasing | QPainter::SmoothPixmapTransform );
  painter->drawPixmap( boundingRect().topLeft(), myOriginalPixmap );
}