【问题标题】:How to draw Truncated text with ATSUI如何使用 ATSUI 绘制截断的文本
【发布时间】:2010-10-13 14:57:10
【问题描述】:

如何使用 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 那样截断字符串的函数...??如果不是,我如何绘制截断为矩形的字符串。

谢谢, 阿比奈。

【问题讨论】:

    标签: core-graphics macos-carbon quickdraw


    【解决方案1】:

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

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

    【讨论】:

    • 感谢彼得,我找到了一种使用 ATSUI 函数测量布局文本尺寸的方法。我暂时不关心 64 位。
    • Abhinay K Reddyreddy:如果您的解决方案与我的不同,为什么不将其作为答案发布并接受?
    猜你喜欢
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多