2013-04-03 41 views
2

我正在使用QGraphicsScene和QGraphicsView來顯示QGraphicsPixmapItem。旋轉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

我有同樣的問題。我發現解決這個問題的唯一方法是重新實現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); 
} 
+0

這個工作對我來說也是如此。不過,我對這個解決方案並不滿意;) – joekr