10-QT下实现画布自适应显示、缩放(以鼠标位置为中心进行缩放)、拖动、以及重置

QT下实现画布自适应、缩放、拖动及重置
本文介绍如何在QT环境下实现画布自适应显示、以鼠标位置为中心的缩放、画布拖动及重置。核心原理是通过计算鼠标在画布上的对应点在缩放前后的位置变化,调整画布位置,从而达到在鼠标位置缩放的效果。

零、效果图

在这里插入图片描述

一、原理说明:

实现在光标位置缩放画布的效果可以理解为,光标所对应到画布上的坐标点在缩放之前和之后都继续对应在光标所在的位置。而一般缩放画布,画布会以画布的左上角为固定点缩放,即画布大小变化后,左上角的位置不会发生变化。因此光标对应画布上的点在缩放后并不在原来的位置,而是发生了位移。因此把这个位移倒着移动回去,就实现了在光标位置点缩放画布的效果了。在任何系统平台上都可以按照这个原理实现在光标点缩放画布的效果。

验证“画布会以画布的左上角为固定点缩放”的方法:
在你实现了画布缩放之后,把鼠标光标移动到画布的左上角点上,然后滚动滑轮缩放,看画布是否是在鼠标点位置做放大缩小变化。如果是,那么说明你的缩放算法也是以画布左上角为原点缩放的。

二、算法实现:

这个算法的计算方法在各个平台重新按照这个计算步骤计算都可以实现光标点缩放画布的效果。
注:这里的实现为缩放参照点为左上角的点,比如放大,则会使矩形向右和向下放心延伸实现放大。
在这里插入图片描述
在这里插入图片描述
a.计算原理:

  1. 找到光标所对应到画布坐标系统的位置点,记为p0
  2. 缩放
  3. 找到缩放后步骤1中光标所对应画布点的新位置坐标点,记为p1
  4. 计算p1点到p0点的位移量,包括x方向位移量move_len_x 和
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值