首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CGContext旋转

CGContext旋转
EN

Stack Overflow用户
提问于 2010-06-14 03:56:37
回答 1查看 9.7K关注 0票数 6

我有一个100x100像素的图像,我想画一个围绕图像中心旋转的不同角度。以下代码可以工作,但会围绕坐标系的原始原点(左上角)旋转,而不是围绕转换后的位置旋转。因此,图像不是围绕自身旋转的,而是围绕屏幕的左上角旋转的。

下面的代码是在一个空白应用程序的自定义视图中运行的,除了下面的代码之外,没有其他任何内容。

代码语言:javascript
复制
- (void)drawRect:(CGRect)rect {
  CGContextRef context = UIGraphicsGetCurrentContext();
  CGContextTranslateCTM(context, -50, -50);
  CGContextRotateCTM (context, 0.3);
  CGContextTranslateCTM(context,768/2,1024/2);
  [image drawAtPoint:CGPointMake(0,0)];
}

我试着用CGAffineTransform做同样的事情,但是得到了同样的结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-14 14:55:10

旋转始终是关于原点的;你需要做的不是击败它,而是利用它。

这里要记住的关键一点是,转换会移动原点。所以,如果你想让图像在屏幕的中心居中,并围绕这个中心旋转图像,你需要做的是:

  1. 将原点移动到屏幕中心。
  2. 按所需的量旋转。(想象x轴的两端在执行此操作时移动;左端向下倾斜,右端向上倾斜。)
  3. 将原点“向左”和“向下”(这两个轴都沿着新的x和y轴)移动图像大小的一半。

想象一下通过这些步骤中的每一个步骤在iPad上的图像的运动。或者,更好的是,记下便利贴并手工模拟:

  1. 从iPad角落中的便笺开始。
  2. 移动便笺,使其位于iPad的中心。
  3. 将便笺围绕该角旋转。
  4. 将便笺向左(相对于自身)移动一半的宽度,向下移动(相对于自身)一半的高度。

你会注意到音符最终被旋转并居中。

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3033685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档