码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-07-12 19:58:24      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:mouse   controls   modifier   中心   rect   height   mod   鼠标   imu   

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

        }
    }
}

  

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

标签:mouse   controls   modifier   中心   rect   height   mod   鼠标   imu   

原文地址:https://www.cnblogs.com/yinwei-space/p/9300979.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!