如何使用 ATSUI 绘制截断文本
如何使用 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... 那样进行字符串截断?如果不是,我如何绘制一个截断为矩形的字符串。
谢谢, 阿比奈。
How do i draw truncated text with ATSUI?? I have a legacy app which uses QuickDraw API. it uses StringWidth , TruncString and DrawString functions. I could replace the StringWidth and DrawString with ATSUI's ATSUMeasureTextImage and ATSUDrawText. However i could not find a way to truncate a string so that it fits into a rect.
I used Quartz with QuickDraw before choosing ATSUI. Quartz does not provide any functions to estimate the size (in pixels) of the drawn text.
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]);
Is there any function in ATSUI that does string truncation like TruncString...?? if not how do i draw a string truncated to a rect.
Thanks,
Abhinay.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您想要使用
HIThemeGetTextDimensions
通过截断策略来测量字符串。它会给你矩形的宽度和高度以及基线;您可以创建一个具有该宽度和高度的 CGRect 并将其原点设置为您想要文本的任何位置。令人惊讶的是,这个函数似乎仍然在 64 位中受支持,尽管它从未被记录下来(HITheme 从来没有任何参考文档)。在标题中查找详细信息。
You want to use
HIThemeGetTextDimensions
to measure the string with a truncation policy. It will give you the rectangle width and height and the baseline; you can make a CGRect with that width and height and set its origin to wherever you want the text.Amazingly, this function appears to still be supported in 64-bit, although it has never been documented (there has never been any reference documentation at all for HITheme). Look it up in the headers for details.