零、效果图

一、原理说明:
实现在光标位置缩放画布的效果可以理解为,光标所对应到画布上的坐标点在缩放之前和之后都继续对应在光标所在的位置。而一般缩放画布,画布会以画布的左上角为固定点缩放,即画布大小变化后,左上角的位置不会发生变化。因此光标对应画布上的点在缩放后并不在原来的位置,而是发生了位移。因此把这个位移倒着移动回去,就实现了在光标位置点缩放画布的效果了。在任何系统平台上都可以按照这个原理实现在光标点缩放画布的效果。
验证“画布会以画布的左上角为固定点缩放”的方法:
在你实现了画布缩放之后,把鼠标光标移动到画布的左上角点上,然后滚动滑轮缩放,看画布是否是在鼠标点位置做放大缩小变化。如果是,那么说明你的缩放算法也是以画布左上角为原点缩放的。
二、算法实现:
这个算法的计算方法在各个平台重新按照这个计算步骤计算都可以实现光标点缩放画布的效果。
注:这里的实现为缩放参照点为左上角的点,比如放大,则会使矩形向右和向下放心延伸实现放大。


a.计算原理:
- 找到光标所对应到画布坐标系统的位置点,记为p0
- 缩放
- 找到缩放后步骤1中光标所对应画布点的新位置坐标点,记为p1
- 计算p1点到p0点的位移量,包括x方向位移量move_len_x 和
QT下实现画布自适应、缩放、拖动及重置

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

被折叠的 条评论
为什么被折叠?



