color picker: scale image wrt device pixel ratio

This commit is contained in:
Peter Hartmann 2025-01-30 09:46:03 +01:00
parent 3fd7a7e51b
commit 333659404a
2 changed files with 9 additions and 3 deletions

View File

@ -8,6 +8,8 @@
#include "QskEvent.h"
#include "QskFunctions.h"
#include <QQuickWindow>
QSK_SUBCONTROL( QskColorPicker, Panel )
QSK_SUBCONTROL( QskColorPicker, ColorPane )
QSK_SUBCONTROL( QskColorPicker, Selector )
@ -180,7 +182,10 @@ QPointF QskColorPicker::position() const
void QskColorPicker::createImage()
{
const auto r = subControlRect( ColorPane );
::createImage( &m_data->image, r.size(), valueAsRatio() );
const auto ratio = window() ? window()->effectiveDevicePixelRatio() : 1.0;
const auto size = r.size() * ratio;
::createImage( &m_data->image, size, valueAsRatio() );
}
#include "moc_QskColorPicker.cpp"

View File

@ -22,10 +22,11 @@ namespace
{
}
void paint( QPainter* p, const QSize&, const void* nodeData ) override
void paint( QPainter* p, const QSize& size, const void* nodeData ) override
{
const Q* q = static_cast< const Q* >( nodeData );
p->drawImage( QPointF( 0, 0 ), q->image() );
const auto image = q->image().scaled( size );
p->drawImage( QPointF( 0, 0 ), image );
}
void updateNode( QQuickWindow* window, const QRectF& rect, const Q* q )