2012-01-09 70 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