2012-06-18 4 views
1

У меня возникла небольшая проблема, нарисуя текст на изображении. Когда я пытаюсь отобразить текст на английском языке, все работает отлично. Проблема в том, что мне нужно локализовать текст. Когда текст является русским, отображаются некоторые странные символы. Любая помощь будет оценена по достоинству.CGContextShowTextAtPoint и кириллический текст

Я использую следующий код, чтобы сделать текст:

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)); 

И это показывает следующее:

Ruined 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]; 
+0

Ответы на этот вопрос могут быть полезными. http://stackoverflow.com/questions/6461980/how-to-display-international-accents-with-quartz-core-graphics-on-iphone – Yarlik

ответ

1

Используйте Core Text для рисования lo вырезанный текст на изображении. См. this для образца

+0

Спасибо, он сделал трюк) – Drabuna

Смежные вопросы