首页 > 其他 > 详细

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

时间:2018-07-12 18:53:28      阅读:23      评论:0      收藏:0      [点我收藏+]

标签:log   滚轮   delta   title   ati   ini   tle   clip   area   

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: 以鼠标为中心进行放缩;

标签:log   滚轮   delta   title   ati   ini   tle   clip   area   

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

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号