aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/context2d/qquickcanvasitem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/items/context2d/qquickcanvasitem.cpp')
-rw-r--r--src/quick/items/context2d/qquickcanvasitem.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/quick/items/context2d/qquickcanvasitem.cpp b/src/quick/items/context2d/qquickcanvasitem.cpp
index da9379e7af..dab35f2a54 100644
--- a/src/quick/items/context2d/qquickcanvasitem.cpp
+++ b/src/quick/items/context2d/qquickcanvasitem.cpp
@@ -1104,14 +1104,17 @@ bool QQuickCanvasItem::isImageLoaded(const QUrl& url) const
QImage QQuickCanvasItem::toImage(const QRectF& rect) const
{
Q_D(const QQuickCanvasItem);
- if (d->context) {
- if (rect.isEmpty())
- return d->context->toImage(canvasWindow());
- else
- return d->context->toImage(rect);
- }
- return QImage();
+ if (!d->context)
+ return QImage();
+
+ const QRectF &rectSource = rect.isEmpty() ? canvasWindow() : rect;
+ const qreal dpr = window() ? window()->effectiveDevicePixelRatio() : qreal(1);
+ const QRectF rectScaled(rectSource.topLeft() * dpr, rectSource.size() * dpr);
+
+ QImage image = d->context->toImage(rectScaled);
+ image.setDevicePixelRatio(dpr);
+ return image;
}
static const char* mimeToType(const QString &mime)