2012-01-09 74 views
0

我有一些相当简单的代码将一些文本绘制到CGContext中。这是一个摘录(稍作修改)。字体大小错误与CGContextShowTextAtPoint

CGContextSelectFont(context, "Helvetica", 1.5, kCGEncodingMacRoman); 
    CGContextShowTextAtPoint(context, xpos, ypos, "Hello", 5); 

文本呈现正常。然而,由于某种未知的原因,在点击包含上下文的视图后,字体会变成更小的尺寸。另外,当我调整包含视图的窗口大小时,字体会恢复为原始大小。这是什么原因?

回答

2

1.5分是非常微小的开始。假设没有其他缩放效果,那将是一个整像素和屏幕上方的模糊像素。

您可能会看到我遇到的一个错误:在进入drawRect:时,当前上下文的文本矩阵不是单位矩阵。就我而言,我看到它在两个轴上都包含一个13的比例,还有一个翻译。 (可能从绘制标题栏中遗留下来。)我在雷达中提交了#10585106,以防你想file your own并引用它。

解决方法是在尝试绘制文本之前将set the text matrix返回the identity transform

一旦你这样做了,你会发现你的文本将会像你所要求的一样小。你应该改变你的字体大小,使其更合理。 Core Text contains a function to get the system fonts(您可以从中get their sizes)和AppKit's NSFont class contains methods for the same purpose

+0

是的解决方案是将文本矩阵设置为标识转换。在发布后不久发现它。这在iOS上不是必需的,所以它有点令人惊讶。 – 2012-01-10 13:13:21

+0

@RubenZilibowitz:在Mac OS X上也不需要这样做,这就是为什么我提交了一个bug并建议您也这样做。 – 2012-01-10 18:47:15