繁体   English   中英

iOS倒置坐标混乱

[英]iOS inverted coordinates chaos

所以我使用CGBitmapContext来适应iOS的软件阻塞。 我将数据写入位图,然后使用CoreGraphics函数在CGBitmapContext上写入文本。 软件阻击器使用左上手原点,而CoreGraphics功能使用左下手原点。 因此,当我使用(0,0)的阻击器绘制图像时,它出现在左上角。 当我在(0,0)处使用CG绘制文本时,它出现在左下角并且它没有被反转。 是的我已经阅读了有关反转坐标的所有其他问题,我正在对生成的CG图像执行此操作以在视图中正确显示它。 也许代码示例会有所帮助......

    // This image is at the top left corner using the custom blitter.
screen->write(image, ark::Point(0, 0));
// This text is at the bottom left corner RIGHT SIDE UP
// cg context is a CGBitmapContext
CGContextShowTextAtPoint(
    cgcontext, 
    0, 0, 
    str.c_str(), 
    str.length());

// Send final image to video output.
CGImageRef screenImage = CGBitmapContextCreateImage(cgcontext);

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextTranslateCTM(context, 0, 480);
// Here I flip the whole image, so if I flip the text above, then
// it ends up upside down.
CGContextScaleCTM(context, 1, -1); 
CGContextDrawImage(context, 
    CGRectMake(0, 0, 320, 480), screenImage);
CGContextRestoreGState(context);

CGImageRelease(screenImage);

如何混合坐标系? 如何用ULC原点正确地绘制我的文本?

翻转坐标系统意味着您将颠倒。 没有这个结果,你不能做那个转变。 (这样做的原因是当你将你的结果转移到可以将其翻转的东西上时,所以颠倒将会再次正面向上。)

一切在积极的y上升,负的y下降。 文本向正y上升,并从基线下降到负y。 连续线的基线具有较低和较低的y位置。 图像和(非文本)路径也是如此 - 一切都是这样的。

你通过改变坐标系来做什么并不会改变事物的绘制方式; 他们总是以积极的态度上升。 改变协调系统是重新定义上下 你将正y变为负y,反之亦然。 你也改变0,0的位置。

所以你需要做的不是翻转坐标系,而是(仅)翻译它。 您需要按上下文的整个高度进行平移,减去一行文本的高度。 然后,将0,0定义为该位置,您可以在0,0处显示文本,它将从该位置绘制,并向右(和向下)向右绘制。

或者,不要翻译,只显示该点的文字。 无论哪种方式都可行。

我很确定你不需要也不希望在目标上下文中进行任何转换。 翻译(如果翻译)应该在位图上下文中进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM