diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-01-14 13:36:39 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-03-12 08:24:09 +0100 |
commit | a719c630f14e175902f6f82b753c3d5030724cc6 (patch) | |
tree | 2d75408f01bdf0c77cf7963c73acaf58df1431bf /examples/corelib/threads/mandelbrot/renderthread.cpp | |
parent | 2c390e85cffbfa1eaeabaadfa823abcb61c1156a (diff) |
Mandelbrot Example: Use High DPI scaling
Create the pixmap with a device pixel ratio set.
Change-Id: I7f7e90aec4d117304852f050be70e14a0c6bf69d
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Diffstat (limited to 'examples/corelib/threads/mandelbrot/renderthread.cpp')
-rw-r--r-- | examples/corelib/threads/mandelbrot/renderthread.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/examples/corelib/threads/mandelbrot/renderthread.cpp b/examples/corelib/threads/mandelbrot/renderthread.cpp index 22ce81c32d..4d2009471c 100644 --- a/examples/corelib/threads/mandelbrot/renderthread.cpp +++ b/examples/corelib/threads/mandelbrot/renderthread.cpp @@ -76,13 +76,14 @@ RenderThread::~RenderThread() //! [2] void RenderThread::render(double centerX, double centerY, double scaleFactor, - QSize resultSize) + QSize resultSize, double devicePixelRatio) { QMutexLocker locker(&mutex); this->centerX = centerX; this->centerY = centerY; this->scaleFactor = scaleFactor; + this->devicePixelRatio = devicePixelRatio; this->resultSize = resultSize; if (!isRunning()) { @@ -99,8 +100,10 @@ void RenderThread::run() { forever { mutex.lock(); - const QSize resultSize = this->resultSize; - const double scaleFactor = this->scaleFactor; + const double devicePixelRatio = this->devicePixelRatio; + const QSize resultSize = this->resultSize * devicePixelRatio; + const double requestedScaleFactor = this->scaleFactor; + const double scaleFactor = requestedScaleFactor / devicePixelRatio; const double centerX = this->centerX; const double centerY = this->centerY; mutex.unlock(); @@ -111,6 +114,7 @@ void RenderThread::run() //! [4] //! [5] int halfHeight = resultSize.height() / 2; QImage image(resultSize, QImage::Format_RGB32); + image.setDevicePixelRatio(devicePixelRatio); const int NumPasses = 8; int pass = 0; @@ -162,7 +166,7 @@ void RenderThread::run() pass = 4; } else { if (!restart) - emit renderedImage(image, scaleFactor); + emit renderedImage(image, requestedScaleFactor); //! [5] //! [6] ++pass; } |