缩放和变换 Qgraphicspixmapitem

Posted

技术标签:

【中文标题】缩放和变换 Qgraphicspixmapitem【英文标题】:Scaled and transform Qgraphicspixmapitem 【发布时间】:2015-05-06 06:12:56 【问题描述】:

我在缩放和转换 QGraphicsPixmapItem 时遇到问题。我创建了图形编辑器,其中我使用初始大小为 100,100 的 QGraphicsItem,之后我通过 setTransform() 方法调整和旋转它。

之后,我存储此转换并将其用于我的另一个名为 player 的应用程序,我在其中使用这些转换并在其上显示图像和视频,如果我设置缩放和@,我现在使用 QgraphicsPixmapItem 显示图像987654325@ 图像清晰度的方法被破坏了。

是否可以保持清晰,即使我缩放和转换它。我使用的图像是 2560x1440 像素。 任何帮助将不胜感激。

代码是:

QGraphicsPixmapItem *pixitem = new QGraphicsPixmapItem;
pixitem->setFlags(QGraphicsItem::ItemIsMovable);
pixitem->setPos(50,50);
QTransform trans;
trans.setMatrix(4.20399,2.9286,0,-3.86601,0.761397,0,33.1015,-134.5,1);
pixitem->setPixmap(QPixmap("abc.jpg").scaled(100,100));
pixitem->setTransform(trans);
pixitem->setShapeMode(QGraphicsPixmapItem::MaskShape);
scene->addItem(pixitem);

【问题讨论】:

【参考方案1】:

您可以使用setTransformationMode 函数来设置像素图项的转换模式。默认值为Qt::FastTransformation。您应该将转换模式设置为 Qt::SmoothTransformation 以启用双线性过滤,从而在缩放时产生更好的质量:

pixitem->setTransformationMode(Qt::SmoothTransformation);

【讨论】:

感谢 Netaj 的回复。图像比以前更清晰,但不像原始像素那样清晰。有什么办法可以防止原始清晰度。 缩放时,质量下降是不可避免的。平滑变换之类的技术只会让它变得更好,没有什么可以做的。 感谢您的回复:) 使用带有 QGraphicsSvgItem 的 SVG 图像可以帮助保持质量 @Arun , QGraphicsSvgItem 似乎只处理 svg 文件?其他文件呢?

以上是关于缩放和变换 Qgraphicspixmapitem的主要内容,如果未能解决你的问题,请参考以下文章

在变换中缩放和旋转矩阵?

矩阵、虚数与坐标变换

opencv 图像平移缩放旋转翻转 图像仿射变换

OpenCV实现图像的几何变换

从二维变换矩阵中提取旋转、缩放值

QGraphicsPixmapItem - 仅触发顶部对象的事件