gpt4 book ai didi

ios - cgcontext 旋转矩形

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:51:19 26 4
gpt4 key购买 nike

伙计们! 我需要绘制一些图像到 CGContext。这是相关代码:

CGContextSaveGState(UIGraphicsGetCurrentContext());

CGContextRef ctx = UIGraphicsGetCurrentContext();

CGRect rect = r;

CGContextRotateCTM(ctx, DEGREES_TO_RADIANS(350));
[image drawInRect:r];


CGContextRestoreGState(UIGraphicsGetCurrentContext());

实际上,矩形是旋转并显示在一个区域上,这不是我的目的。我只是想旋转图像并显示在同一位置。有什么想法吗?????

最佳答案

旋转是关于上下文的原点,这是矩形相对于的同一个点。如果您想象背景中有一张方格纸,您可以更清楚地看到发生了什么:

Rotated context with graph-paper grid in the background and rectangle in the foreground

该线是窗口/ View /层/上下文的“底部”(y=0)。当然,如果你愿意,你可以在底部下方绘制,如果你的上下文以正确的方式转换,你甚至可以看到它。

无论如何,我假设您想要做的是相对于未旋转的世界旋转矩形,而不是旋转世界和其中的所有内容。

旋转任何东西的唯一方法就是旋转世界,所以这就是你需要做的:

  1. 保存图形状态。

  2. 将原点平移到要绘制矩形的点。 (您可能想平移到它的中心点,而不是矩形的原点。)

    Translated context with graph-paper background, showing the origin at what will be the center of the rectangle

  3. 旋转上下文。

    Translated and rotated context with graph-paper background, showing that the axes have now tilted up as before, but now the translated origin has also moved just as the rectangle did

  4. 绘制以原点为中心的矩形。换句话说,矩形的原点应该是宽度的负一半和高度的负一半(即 (CGPoint){ width/-2.0, height/-2.0 })——不要使用origin 它以前有,因为您已经在翻译步骤中使用了它。

    Rectangle drawn in its position, with graph-paper background and origin lines removed

  5. 恢复 gstate,这样以后的绘图就不会旋转。

关于ios - cgcontext 旋转矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15696850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com