2

我正在使用带有 QTCharts 的 QT QML 开发数据表示应用程序。我正在使用 ChartView 和线系列来显示 XY 数据。除了捏合和缩放图形之外,一切都有效。该应用程序针对移动触摸设备。

我希望能够捏合和缩放图形并将缩放原点设置为捏合的中心。目前,我让它工作,但图表始终只从图表的中心缩放。

这在 QML 中可能吗?

谢谢你的帮助。

4

1 回答 1

3

解决方案是使用zoomIn(rect rectangle)可以将可见的矩形作为参数接收的方法,在您的情况下,矩形必须以您单击的点为中心。

import QtQuick 2.9
import QtQuick.Window 2.2
import QtCharts 2.0

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    ChartView {
        id: chartView
        anchors.fill: parent
        theme: ChartView.ChartThemeBrownSand
        antialiasing: true

        LineSeries {
            name: "LineSeries"
            XYPoint { x: 0; y: 0 }
            XYPoint { x: 1.1; y: 2.1 }
            XYPoint { x: 1.9; y: 3.3 }
            XYPoint { x: 2.1; y: 2.1 }
            XYPoint { x: 2.9; y: 4.9 }
            XYPoint { x: 3.4; y: 3.0 }
            XYPoint { x: 4.1; y: 3.3 }
        }

        MouseArea{
            anchors.fill: parent
            onDoubleClicked: chartView.zoomReset();
        }

        PinchArea{
            id: pa
            anchors.fill: parent
            onPinchUpdated: {
                chartView.zoomReset();
                var center_x = pinch.center.x
                var center_y = pinch.center.y
                var width_zoom = height/pinch.scale;
                var height_zoom = width/pinch.scale;
                var r = Qt.rect(center_x-width_zoom/2, center_y - height_zoom/2, width_zoom, height_zoom)
                chartView.zoomIn(r)
            }

        }
    }
}
于 2018-04-26T21:20:43.960 回答