CGContextShowTextAtPoint的字体大小错误

时间:2012-01-09 23:51:32

标签: macos cocoa text

我有一些相当简单的代码将一些文本绘制到CGContext中。这是摘录(稍加编辑)。

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

文字呈现正常。但是,由于某些未知原因,在单击包含上下文的视图后,字体会更改为较小的大小。此外,当我调整包含视图的窗口时,字体将返回原始大小。这是什么原因?

1 个答案:

答案 0 :(得分:2)

1.5点开始时非常小。假设没有其他缩放生效,则屏幕上将是一个整像素和一个模糊像素。

你可能会看到我遇到的一个错误:在进入drawRect:时,当前上下文的文本矩阵不是单位矩阵。就我而言,我看到它在两个轴上都包含一个刻度,加上一个平移。 (可能会从绘制标题栏中遗留下来。)我在Radar中将其作为#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