我们如何在QML中实现图像列表中的缩放变焦?

时间:2018-03-27 06:38:27

标签: qt qml

我正在使用基于Listview的QML实现Imageviewer,其代理是图像。需要注意的是,图像会在整个屏幕上显示。我需要包含有助于放大图像的功能捏缩放。请建议任何好的来源或如何进行示例。

1 个答案:

答案 0 :(得分:1)

我创建了一个用于捏缩放的演示,通过两个触点缩放rect

import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Window 2.0

Window {
    visible: true
    width: 1000
    height: 1000
    title: qsTr("Hello World")
    MultiPointTouchArea {
        id: multiPoint
        anchors.fill: parent
        touchPoints: [
            TouchPoint { id: point1 },
            TouchPoint { id: point2 }
        ]
        property real factor: 1
        property bool isReleased: false // ignore the TouchUpdate after released
        onTouchUpdated: {
            if(isReleased){
                isReleased = false
                return
            }
            if(point1.x != 0 && point2.x != 0){
                var s = Math.sqrt(Math.pow(point1.x - point2.x, 2) + Math.pow(point1.y - point2.y, 2)) /
                        Math.sqrt(Math.pow(point1.startX - point2.startX, 2) + Math.pow(point1.startY - point2.startY, 2))
                rect.scale = s * factor
            }
        }
        onReleased: {
            factor = rect.scale
            isReleased = true
        }
    }
    Rectangle {
        id: rect
        anchors.centerIn: parent
        width: 200; height: 200
        color: "green"
    }
}

更新: 还在Github中创建了用于缩放缩放的C ++ QQuickItem模块。