forked from qt-creator/qt-creator
ImageViewer: No interpolation when zooming in
The imageViewer currently always renders the images smooth/interpolated. When loading an image in an IDE and zooming in, I usually do that in order to examine the details on pixel level. Therefore, I believe that smoothing/interpolation should be turned off with a scalefactor >= 1. This patch does that for images and movies. Svg files remain always smooth. Change-Id: I327583b1f46132d179a1e0425f146106d962377b Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
@@ -69,7 +69,8 @@ public:
|
|||||||
|
|
||||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
|
||||||
{
|
{
|
||||||
painter->setRenderHint(QPainter::SmoothPixmapTransform, true);
|
const bool smoothTransform = painter->worldTransform().m11() < 1;
|
||||||
|
painter->setRenderHint(QPainter::SmoothPixmapTransform, smoothTransform);
|
||||||
painter->drawPixmap(offset(), m_movie->currentPixmap());
|
painter->drawPixmap(offset(), m_movie->currentPixmap());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -257,6 +258,9 @@ void ImageView::doScale(qreal factor)
|
|||||||
|
|
||||||
scale(actualFactor, actualFactor);
|
scale(actualFactor, actualFactor);
|
||||||
emitScaleFactor();
|
emitScaleFactor();
|
||||||
|
if (QGraphicsPixmapItem *pixmapItem = dynamic_cast<QGraphicsPixmapItem *>(d->imageItem))
|
||||||
|
pixmapItem->setTransformationMode(
|
||||||
|
transform().m11() < 1 ? Qt::SmoothTransformation : Qt::FastTransformation);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImageView::updatePixmap(const QRect &rect)
|
void ImageView::updatePixmap(const QRect &rect)
|
||||||
|
|||||||
Reference in New Issue
Block a user