我正在尝试启动并运行外部屏幕支持。不幸的是,我用来将窗口渲染成CGContextRef的方法导致窗口在-90度旋转(没有指定任何旋转)。
UIGraphicsBeginImageContext (extwin.bounds.size);
CGContextRef context = UIGraphicsGetCurrentContext();
if ([window screen] == [UIScreen mainScreen])
{
CGContextSaveGState(context);
[[window layer] renderInContext:context];
CGContextRestoreGState (context);
break;
}
有人能告诉我如何解决这个问题吗?我只使用核心图形进行基本绘图,而不是变换。
感谢。
答案 0 :(得分:0)
CoreGraphics的基本坐标系与UIKit的基本坐标系不同。事实上,它在不同设备上有所不同。听起来您需要弄清楚特定设备上的基本坐标系是什么,然后在尝试渲染窗口图层之前将CTM转换应用于您的上下文。这样您就可以将CoreGraphics的基本坐标系转换为与您期望的相同。
为了澄清,在创建新上下文时,坐标系统已完整记录。但是,窗口层使用的坐标系统将与屏幕的基本CoreGraphics坐标系统匹配(这在不同设备上有所不同)。这需要转换回来匹配您的上下文的坐标系,并且您可以通过找出正确的仿射变换,并将其应用于具有CGContextConcatCTM()
和相关函数的上下文来实现。