gpt4 book ai didi

iphone - 将 NSString 转换为 cString 以与 CGContextShowTextAtPoint 一起使用

转载 作者:太空狗 更新时间:2023-10-30 03:43:44 25 4
gpt4 key购买 nike

我正在使用 CGContextShowTextAtPoint 绘制一个字符串。因此,我需要将我想绘制的 NSString 转换为 c 字符串。不幸的是,欧元货币符号等特殊符号未正确显示。

CGContextSelectFont(currentContext, "TrebuchetMS", 15, kCGEncodingMacRoman);

CGContextShowTextAtPoint(currentContext, 0, 0, [myString cStringUsingEncoding:[NSString defaultCStringEncoding]], [myString length]);

我在 CGContextSelectFont 函数中使用 kCGEncodingFontSpecific 编码进行了尝试,但这也不起作用。

出于性能原因,我需要使用 CG 函数,而不是 NSString 提供的 drawInRect 函数。

也许你能帮帮我!

PS:我知道这是一个经常发布的话题,但我不明白为什么我不能让它工作......

最佳答案

您所指的“特殊符号”受 NSString 的 Unicode 编码支持,但不支持 Core Graphics 字体绘制例程使用的 MacRoman 编码(您可以使用 CGContextSelectFont() 设置的唯一两种编码是 kCGEncodingMacRoman 和 kCGEncodingFontSpecific ).这是用于绘制文本的 CGContextShowTextAtPoint() 路由的缺点。因此,每当我需要在 Core Graphics 上下文中手动绘制文本时,我都会使用 NSString 的 -drawAtPoint: 方法。

就性能而言,在对 an earlier answer 的评论中, Kyle 对 drawAtPoint: 进行了基准测试,每秒绘制 75 次,而 CGContextShowTextAtPoint() 每秒绘制 99 次。这在绘制速度上并没有太大的区别,所以你通过这种方式并没有得到太多。根据我的经验,-drawAtPoint: 对于我的应用程序来说已经足够快了。

编辑(2009 年 10 月 14 日):正如 Sixten Otto 所指出的,我误读了自己的代码。 UTF-8 确实支持完整的字符范围,字体的 MacRoman 不支持。

关于iphone - 将 NSString 转换为 cString 以与 CGContextShowTextAtPoint 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1564577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com