В QGraphicScene рисую наследника QGraphicsItem, который отрисовывает QPixmap. Рисую как правило линии и текст.
Проблема в том что при масштабировании вниз результат напоминает не сглаживание, а выкинутые пиксели - выглядит плохо.
Данный код рисует корректно, но мне QGraphicsPixmapItem не подходит:
QGraphicsPixmapItem *pixItem = scene->addPixmap( QPixmap() );
pixItem->setTransformationMode(Qt::TransformationMode::SmoothTransformation);
Данный код немного размазывает границы при увеличении масштаба, но при уменьшении все выглядит так же плохо.
painter->setRenderHint(QPainter::Antialiasing, true);
painter->setRenderHint(QPainter::SmoothPixmapTransform, true);
Теперь проблема:
Внутри QGraphicsItem::paint
// 1 способ
painter->drawPixmap( boundingRect(), m_pix, m_pix.rect() );
// 2 способ
QSize size = boundingRect().size().toSize();
painter->drawPixmap( boundingRect().topLeft(), m_pix.scaled(size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
второй способ рисует корректно, но иногда размер изображения больше чем размер элемента в сцене - и тогда при масштабе 200% мы получаем размытую картинку(что логично).
первый способ увеличивает правильно, но размывает плохо - эффект пропущеных пикселей.