qml: 以鼠标为中心进行放缩;

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.2 Window {
visible: true
width: 640
height: 700
title: qsTr("Hello World") Rectangle{
id:rect;
width: 500;
height:400;
clip:true;
Image{
id: img;
x:( rect.width - width)/2;
y: (rect.height - height)/2;
width:{
var ratio = rect.width/rect.height;
var srcRatio = sourceSize.width/sourceSize.height;
if( ratio > srcRatio )
return height * srcra ;
else
return rect.width;
}
height:{
var ratio = rect.width/rect.height;
var srcRatio = sourceSize.width/sourceSize.height;
if(ratio > srcRatio)
return rect.height;
else
return width / srcRatio;
}
source: "tvline.jpg" }
MouseArea{
anchors.fill: parent;
drag.target:img;
hoverEnabled: true;
drag.axis:Drag.XAndYAxis;
drag.minimumX: -img.width/2;
drag.maximumX: img.width/2;
drag.minimumY: - img.height/2;
drag.maximumY: img.height/2;
onWheel:{ //滚轮;
if(wheel.modifiers & Qt.ControlModifier )
{
var datl = wheel.angleDelta.y/120;
if( datl > 0)
{
console.log("mouseX:"+mouseX+";mouseY:"+mouseY+";imgX:"+img.x+";imgY"+img.y)
img.x = mouseX + (img.x - mouseX) * 1.1;
img.y = mouseY +(img.y - mouseY) *1.1;
img.width = img.width * 1.1;
img.height = img.height * 1.1;
}
else
{
console.log("mouseX:"+mouseX+";mouseY:"+mouseY+";imgX:"+img.x+";imgY"+img.y)
img.x = mouseX + (img.x - mouseX) / 1.1;
img.y = mouseY +(img.y - mouseY) /1.1;
img.width = img.width /1.1;
img.height = img.height / 1.1;
}
}
} }
}
}

  

上一篇:C#获取url中参数键值对的方法


下一篇:透彻分析反射的基础_Class类