3

現在、画像が常に表示されている画像ビューを持つアプリを開発しています

しばらくすると変化します。今、私はいくつかのテキストを書いたり、任意の記号を描いたりできるようにしたいと思っています

、単純な線、交差線は、画像への描画が画像ビューに表示されることを意味します。私がしたい手段

画像にテキストを追加したり、記号や線などを描画したりします。私はどこでも検索していますが、できません

解決策を見つけてください。どうすればこれを解決できますか?前もって感謝します。

4

2 に答える 2

2

2つのオプションがあります。

  1. imageViewのサブビューとしてを追加し、UILabelUILabelのbackgroundcolorをクリアカラーに設定します。
  2. 次のメソッドを実装します。このメソッドは、引数として画像とテキストを受け取り、テキストが追加された画像を返します。

    //UIImageにテキストを追加します

    -(UIImage *)addText:(UIImage *)img text:(NSString *)text1
    {
    
    int w = img.size.width;
    
    int h = img.size.height; 
    
    //lon = h - lon;
    
    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];// "05/05/09";
    
    CGContextSelectFont(context, "Arial", 18, kCGEncodingMacRoman);
    
    CGContextSetTextDrawingMode(context, kCGTextFill);
    
    CGContextSetRGBFillColor(context, 255, 255, 255, 1);
    
    
    
    //rotate text
    
    CGContextSetTextMatrix(context, CGAffineTransformMakeRotation( -M_PI/4 ));
    
    CGContextShowTextAtPoint(context, 4, 52, text, strlen(text));
    
    CGImageRef imageMasked = CGBitmapContextCreateImage(context);
    
    CGContextRelease(context);
    
    CGColorSpaceRelease(colorSpace);
    
    return [UIImage imageWithCGImage:imageMasked];
    
    }
    

参照: http: //iphonesdksnippets.com/post/2009/05/05/Add-text-to-image-%28UIImage%29.aspx

于 2012-11-14T10:33:30.533 に答える
1

これが機能するかどうかを確認してください:

//Add text to UIImage

-(UIImage *)addText:(UIImage *)img text:(NSString *)text1{

    int w = img.size.width;

    int h = img.size.height; 

    //lon = h - lon;

    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];// "05/05/09";

    CGContextSelectFont(context, "Arial", 18, kCGEncodingMacRoman);

    CGContextSetTextDrawingMode(context, kCGTextFill);

    CGContextSetRGBFillColor(context, 255, 255, 255, 1);



    //rotate text

    CGContextSetTextMatrix(context, CGAffineTransformMakeRotation( -M_PI/4 ));

    CGContextShowTextAtPoint(context, 4, 52, text, strlen(text));

    CGImageRef imageMasked = CGBitmapContextCreateImage(context);

    CGContextRelease(context);

    CGColorSpaceRelease(colorSpace);

    return [UIImage imageWithCGImage:imageMasked];

}
于 2012-11-14T10:32:30.597 に答える