2

我正在使用 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);

没有什么区别。

有什么方法可以获得更高质量的纹理?

原来的 45度

4

1 回答 1

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 );
}
于 2013-04-03T17:40:05.397 回答