Написать многострочное изображение - PullRequest
2 голосов
/ 10 августа 2011

text1 очень длинная строка, поэтому я хочу многострочную поддержку.Что мне для этого нужно сделать?

    int w = img.size.width;
    int h = img.size.height;

    CGColorSpaceRef colorSpace= CGColorSpaceCreateDeviceRGB();

    CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4*w, colorSpace, kCGImageAlphaPremultipliedFirst);

    CGContextDrawImage(context, CGRectMake(0,0, w, h), img.CGImage);
    CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1);
    char* text = (char *)[text1 cStringUsingEncoding:NSASCIIStringEncoding];
    CGContextSelectFont(context, "Arial", 18, kCGEncodingMacRoman);
    CGContextSetTextDrawingMode(context, kCGTextFill);
    CGContextSetRGBFillColor(context, 255,255,255,1);

    //CGContextSetTextMatrix(context, CGAffineTransformMakeRotation(-M_PI/4));;
    CGContextShowTextAtPoint(context, w/3 + 10, 5, text, strlen(text));
    CGImageRef imageMasked = CGBitmapContextCreateImage(context);
    CGContextRelease(context);
    CGColorSpaceRelease(colorSpace);
    return [UIImage imageWithCGImage:imageMasked];

Ответы [ 2 ]

2 голосов
/ 24 августа 2011

Если вы не возражаете против использования методов UIKit вместо методов CGContext для рисования текста, вы можете просто использовать drawInRect:withFont:lineBreakMode:, чтобы нарисовать текст, который будет обрабатывать перенос.Обратите внимание, что вы можете использовать UIGraphicsPushContext и UIGraphicsPopContext, чтобы перейти от существующего CGGraphicsRef к контексту UIKit, и если вы нацеливаетесь на iOS более раннюю, чем 4.0, вы должны сделать UIKitрисунок на основной нити.

1 голос
/ 12 августа 2011

Я полагаю, вы хотите поддерживать многострочный.

Тогда вы всегда можете использовать это:

 CGSize size = [text sizeWithFont:[UIFont fontWithName:@"Georgia-Bold" size:18.0]
                   constrainedToSize:CGSizeMake(240.0, 480.0) lineBreakMode:UILineBreakModeWordWrap];

Назначьте ширину и высоту (в :CGSizeMake(240.0, 480.0)), тип и размер шрифта, а затем назначьте этот размер для вашего text1.frame.

Вы получите свой размер в соответствии с вашей строкой, и ваш текст будет скорректирован там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...