- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我不确定这个函数做什么或应该做什么。
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/
我有一个关于 JavaScript 语法的问题。实际上,我在自学 MEAN 堆栈教程时想出了编码(https://thinkster.io/mean-stack-tutorial#adding-aut
在我的书中它使用了这样的东西: for($ARGV[0]) { Expression && do { print "..."; last; }; ... } for 循环不完整吗?另外,do 的意义何
我已经编写了读取开关状态的代码,如果按 3 次 # 则退出。 void allkeypadTest(void) { static uint8_t modeKeyCount=0; do
因此,对于上周我必须做的作业,我必须使用 4 个 do-while 循环和 if 语句在 Java 中制作一个猜谜游戏。我无法成功完成它,类(class)已经继续,没有为我提供任何帮助。如果有人可以查
int i=1,j=0,n=10,k; do{ j+=i; i<<1; printf("%d\n",i); // printf("%d\n",12<<1); }while
此代码用于基本杂货计算器的按钮。当我按下按钮时,一个输入对话框会显示您输入商品价格的位置。我遇到的问题是我无法弄清楚如何获得 do ... while 循环以使输入对话框在输入后弹出。 我希望它始终恢
当我在循环中修改字符串或另一个变量时,它的条件是否每次都重新计算?或者在循环开始前一次 std::string a("aa"); do { a = "aaaa"; } while(a.size<10)
我刚刚写了这个,但我找不到问题。我使用代码块并编写了这个问题 error: expected 'while' before '{' token === Build finished: 1 errors
do { printf("Enter number (0-6): ", ""); scanf("%d", &Num); }while(Num >= 0 && Num 表示“超过”,<表
我有一个包含 10 个项目的 vector (为简单起见,所有项目都属于同一类,称其为“a”)。我想要做的是检查“A”不是 a) 隐藏墙壁或 b) 隐藏另一个“A”。我有一个碰撞函数可以做到这一点。
嗨,这是我的第二个问题。我有下表 |-----|-------|------|------| |._id.|..INFO.|.DONE.|.LAST.| |..1..|...A...|...N..|.
这个问题在这里已经有了答案: 关闭 12 年前。 Possible Duplicates: Why are there sometimes meaningless do/while and if/e
来自 wikibook在 F# 上有一小部分它说: What does let! do?# let! runs an async object on its own thread, then it i
我在 Real World Haskell 书中遇到了以下函数: namesMatching pat | not (isPattern pat) = do exists do
我有一个类似于下面的用例,我创建了多个图并使用 gridExtra 将它们排列到一些页面布局中,最后使用 ggsave 将其保存为 PDF : p1 % mutate(label2
当我使用具有 for 循环的嵌套 let 语句时,如果没有 (do (html5 ..)),我将无法运行内部 [:tr]。 (defpartial column-settings-layout [&
执行 vagrant up 时出现此错误: anr@anr-Lenovo-G505s ~ $ vagrant up Bringing machine 'default' up with 'virtua
# ################################################# # Subroutine to add data to the table Blas
我想创建一个检查特定日期格式的读取主机。此外,目标是检查用户输入是否正确,如果不正确,则提示应再次弹出。 当我刚接触编程时,发现了这段代码,这似乎很合适。我仍然在努力“直到” do {
我关注这个tutorial在谷歌云机器学习引擎上进行培训。我一步一步地跟着它,但是在将 ml 作业提交到云时我遇到了错误。我运行了这个命令。 sam@sam-VirtualBox:~/models/r
我是一名优秀的程序员,十分优秀!