gpt4 book ai didi

ios - CGContext SetTextMatrix 是做什么的?

转载 作者:可可西里 更新时间:2023-11-01 05:44:23 25 4
gpt4 key购买 nike

我不确定这个函数做什么或应该做什么。

void CGContextSetTextMatrix (
CGContextRef c,
CGAffineTransform t
);

The reference不是那么有帮助。 :(

Sets the current text matrix.

The text matrix specifies the transform from text space to user space. To produce the final text rendering matrix that is used to actually draw the text on the page, Quartz concatenates the text matrix with the current transformation matrix and other parameters from the graphics state.

Note that the text matrix is not a part of the graphics state—saving or restoring the graphics state has no effect on the text matrix. The text matrix is an attribute of the graphics context, not of the current font."

你能给我解释一下吗?

最佳答案

文本矩阵是一种应用于文本的特殊转换。您可以使用它来更改使用 Core Text(或在 CGContextShowText 被弃用之前的 Core Graphics)绘制的文本的方向。在 iOS 上,Core Text 和 Core Graphics 有不同的坐标系。通常你可以通过 flipping the Core Graphics coordinate system 来解决这个问题, 但可以改为翻转文本矩阵,但我不推荐它,除非是非常简单的文本(它会弄乱文本布局)。

(为什么?!?!?他问,它们会有不同的坐标系吗?好吧,因为当 iPhoneOS 出现时,Apple 决定 iPhone 开发者希望原点像 Windows 一样位于左上角,而不是左下方是数学家和 Mac 开发人员习惯的地方。所以他们翻转了坐标系,但是当他们从 Mac 移植 Core Text 时,他们保留了它的坐标系,这对我们所有拥有复杂文本布局代码的人来说非常好我们可以很容易地进行移植,而且我确信它大大简化了移植,而且......好吧......原因。这与文本矩阵无关;它自 10.0 以来就存在,并且存在以便你可以旋转文本.)

由于文本矩阵没有为您初始化,最好在使用低级框架绘制文本之前始终对其进行初始化。你像这样初始化它:

CGContextSetTextMatrix(context, CGAffineTransformIdentity);

如果您使用 UIKit 绘制文本,这当然不是必需的。 UIKit 将为您处理所有这些。

关于ios - CGContext SetTextMatrix 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23527527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com