Core graphics 如何使用ATSUI绘制截断文本

Core graphics 如何使用ATSUI绘制截断文本,core-graphics,macos-carbon,quickdraw,Core Graphics,Macos Carbon,Quickdraw,如何使用ATSUI绘制截断文本??我有一个使用QuickDraw API的遗留应用程序。它使用StringWidth、TruncString和DrawString函数。我可以用ATSUI的ATSUMeasureTextImage和ATSUDrawText替换StringWidth和DrawString。然而,我找不到一种方法来截断一个字符串,使它适合一个矩形 在选择ATSUI之前,我使用了石英和QuickDraw。Quartz不提供任何函数来估计绘制文本的大小(以像素为单位) CGContext

如何使用ATSUI绘制截断文本??我有一个使用QuickDraw API的遗留应用程序。它使用StringWidth、TruncString和DrawString函数。我可以用ATSUI的ATSUMeasureTextImage和ATSUDrawText替换StringWidth和DrawString。然而,我找不到一种方法来截断一个字符串,使它适合一个矩形

在选择ATSUI之前,我使用了石英和QuickDraw。Quartz不提供任何函数来估计绘制文本的大小(以像素为单位)

CGContextSelectFont(cgContext,
    "Geneva", 12.0, kCGEncodingMacRoman);
CGContextSetTextMatrix(cgContext,
    CGAffineTransformMake(1.0,0.0, 0.0,
    -1.0, 0.0, 0.0));
CGContextShowTextAtPoint(cgContext,
    inPoint.h, inPoint.v + 12.00, (const
    char*)&(inString[1]), inString[0]);
ATSUI中是否有任何函数可以像TruncString那样进行字符串截断。。。??如果不是,如何绘制截断为矩形的字符串

谢谢,
a Hinay。

您想使用
HIThemeGetTextDimensions
来测量具有截断策略的字符串。它将为您提供矩形的宽度和高度以及基线;您可以创建一个具有该宽度和高度的CGRect,并将其原点设置为需要文本的任何位置


令人惊讶的是,这个函数似乎仍然支持64位,尽管它从未被记录(从来没有任何关于HITheme的参考文档)。有关详细信息,请在标题中查找。

谢谢Peter,我找到了一种使用ATSUI函数测量分层文本尺寸的方法。我现在不关心64位。如果你的解决方案与我的不同,为什么不把它作为一个答案发布并接受呢?