Core graphics 如何使用ATSUI绘制截断文本
如何使用ATSUI绘制截断文本??我有一个使用QuickDraw API的遗留应用程序。它使用StringWidth、TruncString和DrawString函数。我可以用ATSUI的ATSUMeasureTextImage和ATSUDrawText替换StringWidth和DrawString。然而,我找不到一种方法来截断一个字符串,使它适合一个矩形 在选择ATSUI之前,我使用了石英和QuickDraw。Quartz不提供任何函数来估计绘制文本的大小(以像素为单位)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
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位。如果你的解决方案与我的不同,为什么不把它作为一个答案发布并接受呢?