1

画像にテキストを描画するのに少し問題があります。英語のテキストを表示しようとすると、すべてうまくいきます。問題は、テキストをローカライズする必要があることです。テキストがロシア語の場合、いくつかの奇妙な記号が表示されます。どんな助けでも大歓迎です。

テキストを描画するために、次のコードを使用しています。

CGContextSetRGBFillColor(context, 0.0, 0.0, 0.0, 1);
char* text = (char *)[addText cStringUsingEncoding:NSUTF8StringEncoding];
CGContextSelectFont(context, "Impact", 20, kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextShowTextAtPoint(context, 20, h+addHeightBelow, text, strlen(text));

そして、それは以下を示しています:

台無しにされたテキスト

したがって、Core Text を使用する必要があります。コードは次のとおりです。

CTFontRef fontRef=CTFontCreateWithName((CFStringRef)@"Impact", 20.0f, NULL);
CGColorRef color=[UIColor blackColor].CGColor;
NSDictionary *attrDictionary=[NSDictionary dictionaryWithObjectsAndKeys: 
                              (id)fontRef, (id)kCTFontAttributeName, 
                              color, (id)kCTForegroundColorAttributeName,
                              nil];
NSAttributedString *stringToDraw=[[NSAttributedString alloc] initWithString:addText attributes:attrDictionary];

CTLineRef line=CTLineCreateWithAttributedString((CFAttributedStringRef)stringToDraw);
CGContextSetTextPosition(context, 20, h+addHeightBelow);
CTLineDraw(line, context);

CFRelease(line);
CFRelease(fontRef);
[stringToDraw release];
4

1 に答える 1

1

画像にローカライズされたテキストを描画するには、 Core Textを使用します。サンプルはこちらを参照

于 2012-06-18T11:35:36.983 に答える