我正在学习Qt5。我从一个非常简单的QtQuick QML应用程序开始,只有一个图像填充背景。它可以工作,但是当我调整窗口大小(Windows 8.1 64位)时,调整大小并不流畅。存在大量抖动,有时甚至存在明显的滞后。它应该为此使用 OGL 吧?
这是我的代码:
import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Dialogs 1.2
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
menuBar: MenuBar {
Menu {
title: qsTr("File")
MenuItem {
text: qsTr("&Open")
onTriggered: console.log("Open action triggered");
}
MenuItem {
text: qsTr("Exit")
onTriggered: Qt.quit();
}
}
}
MainForm {
anchors.fill: parent
}
}
和
import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.2
Item {
visible: true
width: 640
height: 480
Image {
id: image1
sourceSize.height: 687
sourceSize.width: 1280
smooth: false
anchors.fill: parent
source: "images/showcase1280.jpg"
}
}
苏吉特斯赞赏。
它不顺利。
图像具有一个名为 smooth
的属性,其目的是保存:
[...]图像在缩放或变换时是否被平滑过滤。
另一个有趣的属性是 mimap
,文档说:
此属性保存图像在缩放或转换时是否使用 mipmap 筛选。
与平滑相比,Mipmap 过滤在缩小时提供更好的视觉质量,但可能会降低性能(在初始化图像和渲染期间)。
请注意,在代码中设置:
smooth: false
如果您想要平滑更改,也许您做错了,请尝试将上述属性设置为 true。
我不是通过解决你的任务来假装。但我认为您可以使用动画作为变体:
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Layouts 1.1
Item {
Image {
anchors.centerIn: parent
width: parent.width
height: parent.height
sourceSize.height: 1000
sourceSize.width: 2000
source: "https://upload.wikimedia.org/wikipedia/ru/archive/8/88/20090512220306!Qt_logostrap_CMYK.png"
smooth: false
fillMode: Image.Stretch
asynchronous: true
Behavior on width {
animation: whAnimation
}
Behavior on height {
animation: whAnimation
}
NumberAnimation {
id: whAnimation
duration: 150
}
}
}