Название: изменение размера QPixmap Отправлено: deMax от Июль 26, 2018, 14:20 В QGraphicScene рисую наследника QGraphicsItem, который отрисовывает QPixmap. Рисую как правило линии и текст.
Проблема в том что при масштабировании вниз результат напоминает не сглаживание, а выкинутые пиксели - выглядит плохо. Данный код рисует корректно, но мне QGraphicsPixmapItem не подходит: Код: QGraphicsPixmapItem *pixItem = scene->addPixmap( QPixmap() ); Данный код немного размазывает границы при увеличении масштаба, но при уменьшении все выглядит так же плохо. Код:
Теперь проблема: Внутри QGraphicsItem::paint Код: // 1 способ первый способ увеличивает правильно, но размывает плохо - эффект пропущеных пикселей. Название: Re: изменение размера QPixmap Отправлено: deMax от Июль 26, 2018, 14:45 Примерно так (см. вложения)
Хочу нарисовать первым способом с таким же размытием как во втором способе. Название: Re: изменение размера QPixmap Отправлено: deMax от Июль 26, 2018, 16:30 Конечно можно попробовать взять painter->worldTransform().toAffine().m11 и m22, они содержат масштаб с которым происходит отрисовка.
qreal scale = painter->worldTransform().toAffine().m11(); QSize size = boundingRect().size().toSize(); painter->drawPixmap( boundingRect().topLeft(), m_pix.scaled(size*scale, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); Название: Re: изменение размера QPixmap Отправлено: deMax от Июль 27, 2018, 10:33 Эти 2 способа рисуют корректно:
QPixmap::scaled(size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)) QGraphicsPixmapItem::setTransformationMode(Qt::TransformationMode::SmoothTransformation); Сделал первым способом, можно ли drawPixmap заставить масштабировать корректно? Или может есть еще сспособы? |