0

これらの関数を使用して、画像の上にテキストを描画しています。

char* text = (char *)[text1 cStringUsingEncoding:NSASCIIStringEncoding];
CGContextSelectFont(context, "Helvetica", fontSize, kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetRGBFillColor(context, 0.0, 0.1, 0.1, 1);
CGContextShowTextAtPoint(context, 5, 20, text, strlen(text));

strlen に「ü」、「ö」、「ä」などの文字がある場合を除いて、正常に動作します - クラッシュの原因になります。だから私はこの行の前にこれを使って文字列の長さを取得しようとしました

char* text = (char *)[text cStringUsingEncoding:NSASCIIStringEncoding];
by doing this:
int length = [text length];
and then replace strlen(text) with length.

クラッシュはしませんが、テキストは描画されません。ここでの犯人はキャラクターだと思います。私は両方を試しました

kCGEncodingMacRoman
kCGEncodingFontSpecific

しかし、何も役に立ちませんでした。これでいいですか?ありがとう。

更新: @Martin R:

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL, 90.0f, 90.0f, 8, 4 * 90.0f, colorSpace,     kCGImageAlphaPremultipliedFirst);
CGContextDrawImage(context, CGRectMake(0, 0, 90.0f, 90.0f), img.CGImage);

CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetRGBFillColor(context, 0.8, 0.1, 0.1, 1);
[text1 drawAtPoint:(CGPoint){5, 20} withFont:[UIFont fontWithName:@"Helvetica" size:10.0f]];
CGImageRef finalImage = CGBitmapContextCreateImage(context);

CGContextRelease(context);
CGColorSpaceRelease(colorSpace);

UIImage *image = [UIImage imageWithCGImage:finalImage];
CGImageRelease(finalImage);

return image;
4

1 に答える 1