在CGBitmapContext中没有函数“ShowTextAtPoint”的德语变音符号

时间:2011-07-18 11:08:40

标签: ios xamarin.ios

我们在使用ShowTextAtPoint中的函数CGBitmapContext显示带有德语元音的文本时遇到问题。不显示变音字符。

我们尝试从XCode转换代码:

CGContextSelectFont(MyBitmapContext, FontName, 24, kCGEncodingMacRoman);
CGContextShowTextAtPoint(MyBitmapContext, x, y, [caption cStringUsingEncoding:    
NSMacOSRomanStringEncoding], [caption length]);

到MonoTouch:

MyBitmapContext.SelectFont(FontName, 24, CGTextEncoding.MacRoman);
MyBitmapContext.ShowTextAtPoint(x, x, caption , caption.Length);

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

问题是CGContext的CoreGraphics API不支持渲染UTF8代码,它仅限于MacRoman中的文本编码(正如您在样本中所示)。

修复是使用UIKit函数,为此,您可以将代码更改为:

UIGraphics.PushContext (mBmpContext);
mBmpContext.SetRGBFillColor(1f,1f,1f,1f);
var font = UIFont.FromName ("Arial", 30);
using (var nsstr = new NSString ("äöü ÜÖÄ")){
    nsstr.DrawString (new PointF (10, 400), font);
}
UIGraphics.PopContext ()