0

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

在选择 ATSUI 之前,我使用 Quartz 和 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 一样进行字符串截断...??如果不是,我如何绘制截断为矩形的字符串。

谢谢,阿比奈。

4

1 回答 1

1

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

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

于 2010-10-14T08:16:21.140 回答