伙计们! 我需要绘制一些图像到 CGContext。这是相关代码:
CGContextSaveGState(UIGraphicsGetCurrentContext());
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGRect rect = r;
CGContextRotateCTM(ctx, DEGREES_TO_RADIANS(350));
[image drawInRect:r];
CGContextRestoreGState(UIGraphicsGetCurrentContext());
实际上,矩形是旋转并显示在一个区域上,这不是我的目的。我只是想 旋转图像并显示在同一位置。 有什么想法吗?????
最佳答案
旋转是关于上下文的原点,这是矩形相对于的同一个点。如果您想象背景中有一张方格纸,您可以更清楚地看到发生了什么:
该线是窗口/ View /层/上下文的“底部”(y=0)。当然,如果你愿意,你可以在底部下方绘制,如果你的上下文以正确的方式转换,你甚至可以看到它。
无论如何,我假设您想要做的是相对于未旋转的世界旋转矩形,而不是旋转世界和其中的所有内容。
旋转任何东西的唯一方法就是旋转世界,所以这就是你需要做的:
保存图形状态。
将原点平移到要绘制矩形的点。 (您可能想平移到它的中心点,而不是矩形的原点。)
旋转上下文。
绘制以原点为中心的矩形。换句话说,矩形的原点应该是宽度的负一半和高度的负一半(即
(CGPoint){ width/-2.0, height/-2.0 }
)——不要使用origin 它以前有,因为您已经在翻译步骤中使用了它。恢复 gstate,这样以后的绘图就不会旋转。
关于ios - cgcontext 旋转矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15696850/