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;
                    }
                }
            }

        }
    }
}

  

猜你喜欢

转载自www.cnblogs.com/yinwei-space/p/9300979.html
QML