我正在使用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);
没有什么区别。
有没有办法获得更高质量的质地?
答案 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 );
}