Высокое значение DPI приводит к неправильному масштабированию растровых изображений.C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Высокое значение DPI приводит к неправильному масштабированию растровых изображений.

Сообщение Anonymous »


Я использую Qt 6.5 в Windows 10, растровые изображения в моем приложении масштабируются по-разному в зависимости от текущего разрешения.

Минимально воспроизводимый пример:

Масштаб Windows 100 %


Изображение


масштаб 125 %


Изображение


масштаб 150 %


Изображение


Метка класса: public QLabel { Q_OBJECT публика: Значок QIcon; Label(QWidget* родительский = nullptr): QLabel(parent){} void PaintEvent (событие QPaintEvent*) переопределить { Художник QPainter(это); Painter.setRenderHint(QPainter::Сглаживание); Painter.setRenderHint(QPainter::SmoothPixmapTransform); icon.paint(&painter, rect(), Qt::AlignCenter, QIcon::Normal, QIcon::On); } }; встроенный QPixmap setRoundness (растровое изображение QPixmap, int округлость) { Путь QPainterPath; qDebug() Изображение QPixmap roundedPixmap = setRoundness(icon.pixmap(QSize(55, 55)), 50); Метка* метка = новая метка; метка-> значок = roundedPixmap; QLabel* label_2 = новый QLabel; label_2->setPixmap(roundedPixmap); QWidget* виджет = новый QWidget; QHBoxLayout* hLayout = новый QHBoxLayout(виджет); hLayout->addWidget(метка); hLayout->addWidget(label_2); hLayout->setContentsMargins(0, 0, 0, 0); hLayout->setSpacing(30); setCentralWidget (виджет); setContentsMargins(32, 32, 32, 32); возвращаться; } } Это проблема в QPixmap, а не в QPaintEvent, потому что когда я сохраняю roundedPixmap.save("test_2.png"); это вот что я получаю:

(DPI 150%)
Изображение


(DPI100%)
Изображение


Как решить эту проблему с разрешением?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»