将CoreGraphics的坐标更改为左上角会导致ShowText呈现倒置

时间:2013-05-12 23:47:17

标签: macos core-graphics quartz-graphics monomac

我已配置CGContextPDF,因此(0,0)坐标位于左上角,而不是左下角,使用以下内容:

context.TranslateCTM(0, height);
context.ScaleCTM(1, -1);

但是,现在每当我致电ShowText时,文字都会被颠倒。我记得使用MonoTouch for iOS遇到了这个问题,修复是为了做到这一点,但是,UIKit的区别在于左上角已经开始的坐标系。

我曾尝试以类似的方式翻转TextMatrix音阶。选择字体后(重要的是)但它似乎没有任何效果。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

最后想出了这一个 - 结果你需要做的就是 翻转TextMatrix如果你之前做过或者无关紧要在为整个上下文翻转坐标系之后。它以前不起作用的原因是因为我将它应用于现有的转换,而不是分配一个新的转换,即这是有效的

context.TextMatrix = CGAffineTransform.MakeScale(1.0f, -1.0f);
context.TranslateCTM(0, height);
context.ScaleCTM(1.0f, -1.0f);

但这不是

context.TextMatrix.Scale(1.0f, -1.0f);
context.TranslateCTM(0, height);
context.ScaleCTM(1.0f, -1.0f);

另一个缺点是文本总是向上呈现而不是向下呈现,所以如果想要在(x,y)上绘制而不是下的