chartarea缩放_ChartView与LineSeries搭配实现曲线局部缩放功能

Rectangle {

id: view_rect

anchors.fill: parent//anchors.topMargin: 40

ChartView {

id: view

title:"Two Series, Common Axes"anchors.fill: parent

legend.visible:falseantialiasing:trueproperty point hoveredPoint: Qt.point(0, 0)

propertybool hovered: falseValueAxis {

id: axisX

min:0max:50tickCount:5}

ValueAxis {

id: axisY

min:-0.5max:1.5}

LineSeries {

id: series1

axisX: axisX

axisY: axisY

onHovered: {//view.hoveredPoint = point//view.hovered = state

}

}

MouseArea {

anchors.fill: parent

hoverEnabled:trueonPositionChanged: {var point = Qt.point( 0, 0)

point.x=mouse.x

point.y=mouse.yvar hoveredPoint =view.mapToValue( point, series1 )if( hoveredPoint.x >= 0 && hoveredPoint.x <= 50) {

view.hovered= trueview.hoveredPoint=hoveredPoint

}else{

view.hovered= false}

}

onWheel: {if( view.hovered ) {if( wheel.angleDelta.y > 0) {if( axisX.max - axisX.min <= 2) {return}

view.zoomIn( view.hoveredPoint )

}else{

view.zoomOut( view.hoveredPoint )if( axisX.min <= 0) {

axisX.min= 0}if( axisX.max >= 50) {

axisX.max= 50}

}

}

}

}

function zoomIn( hoveredPoint ) {if( hoveredPoint.x - axisX.min <= 1) {return}var scale = parseFloat( ( hoveredPoint.x - axisX.min ) / ( axisX.max -axisX.min ) )

axisX.min++axisX.max= ( hoveredPoint.x - axisX.min ) / scale +axisX.min

}

function zoomOut( hoveredPoint ) {var scale = parseFloat( ( hoveredPoint.x - axisX.min ) / ( axisX.max -axisX.min ) )

axisX.min--axisX.max= ( hoveredPoint.x - axisX.min ) / scale +axisX.min

}

}//Add data dynamically to the series

Component.onCompleted: {for (var i = 0; i <= 50; i++) {

series1.append(i, Math.random());

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值