iOS:renderInContext是否将窗口内容渲染为-90度?

时间:2011-11-18 18:17:23

标签: ios ipad

我正在尝试启动并运行外部屏幕支持。不幸的是,我用来将窗口渲染成CGContextRef的方法导致窗口在-90度旋转(没有指定任何旋转)。

UIGraphicsBeginImageContext (extwin.bounds.size);
CGContextRef context = UIGraphicsGetCurrentContext();

 if ([window screen] == [UIScreen mainScreen])
    {
        CGContextSaveGState(context);
        [[window layer] renderInContext:context];
        CGContextRestoreGState (context);
        break;
}

有人能告诉我如何解决这个问题吗?我只使用核心图形进行基本绘图,而不是变换。

感谢。

1 个答案:

答案 0 :(得分:0)

CoreGraphics的基本坐标系与UIKit的基本坐标系不同。事实上,它在不同设备上有所不同。听起来您需要弄清楚特定设备上的基本坐标系是什么,然后在尝试渲染窗口图层之前将CTM转换应用于您的上下文。这样您就可以将CoreGraphics的基本坐标系转换为与您期望的相同。

为了澄清,在创建新上下文时,坐标系统已完整记录。但是,窗口层使用的坐标系统将与屏幕的基本CoreGraphics坐标系统匹配(这在不同设备上有所不同)。这需要转换回来匹配您的上下文的坐标系,并且您可以通过找出正确的仿射变换,并将其应用于具有CGContextConcatCTM()和相关函数的上下文来实现。