Необходимость сглаживания для создания для fillmode изображения


У меня есть фрагмент кода в QML:

Image {
    anchors.rightMargin: 10
    anchors.leftMargin: 10
    anchors.bottomMargin: 10
    anchors.topMargin: 10
    anchors.fill: parent
    source: "Google Chrome Icon.png"
    fillMode: Image.PreserveAspectFit
    }

Изображение автоматически растягивается вместе с окном. Но метод растяжения не сглажен, поэтому уродливый результат:

Изображение хрома http://img838.imageshack.us/img838/667/unantialiasedchrome.png

Есть ли какой-нибудь метод, чтобы сделать результат большим?
2 3

2 ответа:

Как чистое решение QML вы можете просто установить smooth свойство элемента Image к true:

import QtQuick 1.0

Image {
    smooth: true  // smoother image
    anchors.rightMargin: 10
    anchors.leftMargin: 10
    anchors.bottomMargin: 10
    anchors.topMargin: 10
    anchors.fill: parent
    source: "Google Chrome Icon.png"
    fillMode: Image.PreserveAspectFit
}

Вы можете включить сглаживание, включив его в QDeclarativeView,

QDeclarativeView view;
view.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
view.setResizeMode( QDeclarativeView::SizeRootObjectToView );
view.setSource(QUrl("qrc:/main.qml"));
view.show();

Как бы то ни было , чтобы изображение выглядело хорошо при растяжении, я предложу вам использовать изображение svg вместо изображения png.