From ae9d18ce9ecb16110256e113dbd372aa88dcf89f Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Sat, 11 Aug 2018 17:44:32 +0800 Subject: [PATCH] blur: fix HiDPI awareness (#305) When copying from a QPixmap, the rectangle area should be scaled according to `devicePixelRatio`. This fixes #300. --- src/tools/blur/blurtool.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tools/blur/blurtool.cpp b/src/tools/blur/blurtool.cpp index 9d119ce8..e845d471 100644 --- a/src/tools/blur/blurtool.cpp +++ b/src/tools/blur/blurtool.cpp @@ -52,13 +52,15 @@ void BlurTool::process(QPainter &painter, const QPixmap &pixmap, bool recordUndo } QPoint &p0 = m_points.first; QPoint &p1 = m_points.second; + auto pixelRatio = pixmap.devicePixelRatio(); QRect selection = QRect(p0, p1).normalized(); + QRect selectionScaled = QRect(p0 * pixelRatio, p1 * pixelRatio).normalized(); QGraphicsBlurEffect *blur = new QGraphicsBlurEffect; blur->setBlurRadius(10); QGraphicsPixmapItem *item = new QGraphicsPixmapItem ( - pixmap.copy(selection)); + pixmap.copy(selectionScaled)); item->setGraphicsEffect(blur); QGraphicsScene scene;