在 Core Gaphics 中翻译时模拟锚点

发布于 2024-10-27 02:14:03 字数 169 浏览 1 评论 0原文

Core Graphics 不提供锚点属性,所有转换/平移均假定锚点 0,0(左下)。 Core Animation确实提供了锚点,但我们没有使用CA。

有谁知道如何修改变换矩阵(与 CGAffineTransform 一起使用)以便我们可以模拟不同的锚点位置(例如底部中间、中心等)?

谢谢

Core Graphics does not provide an anchor point property, and all transforming/translating assumes an anchor point 0,0 (lower left). Core Animation, does provide an anchor point, but we are not using CA.

Does anyone know how to modify a transformation matrix (used with CGAffineTransform) so that we can simulate different anchor point locations (e.g. bottom middle, center, etc)?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

狠疯拽 2024-11-03 02:14:03

当然。将所需的点转换为 0, 0。然后应用您想要的任何转换。然后应用逆翻译。

假设您要围绕点 25, 25 旋转。请执行以下操作:

CGAffineTransform *t = CGAffineTransformMake();
t = CGAffineTransformTranslate(t, -25, -25);
t = CGAffineTransformRotate(t, angle);
t = CGAffineTransformTranslate(t, 25, 25);

此时,t 是一个变换,它将旋转大约 25, 25 的角度。

Sure. Translate the desired point to 0, 0. Then apply whatever transformation you want. Then apply the inverse translation.

Say you want to rotate about the point 25, 25. Do this:

CGAffineTransform *t = CGAffineTransformMake();
t = CGAffineTransformTranslate(t, -25, -25);
t = CGAffineTransformRotate(t, angle);
t = CGAffineTransformTranslate(t, 25, 25);

At this point, t is a transform which will rotate by angle about 25, 25.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文