ios - CGAffineTransform 文档中可能出现的错误
问题描述
在 CGAffineTransform 文档https://developer.apple.com/documentation/coregraphics/cgaffinetransform将点 (x, y) 转换为点 (x',y') 的方程如下: x'=ax+cy+t_x, y'=bx+dy+t_y。考虑我们对视图进行缩放的情况。那么方程变为x'=ax,y'=dy。这意味着根据方程式,缩放后保持在同一位置的点是 (0,0)。但是,保持在同一位置的点是视图的中心。这可以在实践中看到,也可以在此处看到:https ://developer.apple.com/documentation/quartzcore/calayer/1410817-anchorpoint 。
我的问题是:CGAffineTransform 文档中提供的方程式是否确实不正确?
解决方案
我不确定你是从哪里来This means that according to the equations the point that remains at the same position after the scaling is (0,0).
的。
如果您只是缩放视图,则中心点本身不会改变,因此t_x
也t_y
不会改变,只有您看到的缩放比例,即系数a
x 和d
y 会发生变化;因此,当缩放x' = ax
和y' = dy
.
例如,如果您在图像上缩放,假设您当前的中心点是图像的中心。如果缩放,您将在图像的中心进行缩放。如果用户滑动图像,那不再是视图上的唯一缩放。
此外,要点(0,0)
不一样;唯一保持不变的是中心。假设您可以看到(0,0,400,400)
- 的完整图像,点(0,0)
位于左上角和(200,200)
中心。如果你放大倍数,你现在将(100,100)
在左上角和(200,200)
中心。注意:(0,0)
没有保持不变,但中心保持不变。
答案:没有
推荐阅读
- f# - 具有共享属性的 F# 域建模
- android - 如何在 Android 中创建类似“Tab Layout”的圆形数组?
- jquery - 从 json 中获取值并放入下拉列表
- r - R 中的循环遍历变量名并创建新的滞后变量
- python - 函数 'cvSetMouseCallback' 中的 NULL 窗口处理程序
- python - 为什么迭代器需要被耗尽和丢弃?
- javascript - 在 React 应用程序中使用 vanilla JavaScript 包
- c# - 如何统一访问.psb文件的特定图层(精灵)?
- python - 如何制作阴影贴图?
- spring - 如何让 Spring Boot Actuator LdapHealthIndicator 与 Spring Security 的 Ldap 一起运行?