0

我已经配置了一个CGContextPDF所以(0,0)坐标在左上角而不是左下角,使用以下:

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

但是,现在每当我打电话时ShowText,文本都会颠倒呈现。我记得在 iOS 上使用 MonoTouch 时遇到过这个问题,解决方法是执行上述操作,但是,不同之处在于 UIKit 的坐标系已经从左上角开始。

在选择字体之前和之后,我都尝试过以类似的方式翻转TextMatrix比例(以防万一),但它似乎没有任何效果。

有任何想法吗?

4

1 回答 1

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) 上而不是在 下绘制,您总是需要翻译文本的高度。

于 2013-06-09T11:05:17.983 回答