2012-02-17 20 views
0
CGSize cgs = CGSizeMake(250.0, 300.0); 
    UIGraphicsBeginImageContext(cgs);  
    CGRect rectangle = CGRectMake(0,0,cgs.width,cgs.height); 
    UIImage *myImage = [UIImage imageNamed:@"BMW.jpg"]; 

    [myImage drawInRect:rectangle];  
    [myImage release]; 

    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(context, 5.0); 
    CGContextSetRGBStrokeColor(context, 0.0, 0.0, 1.0, 1.0); 
    CGContextStrokeRect(context, rectangle); 

    UIImage *testImg = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    [testImg drawAtPoint:CGPointMake(35, 10)]; 

画像が描かれる画像と矩形の枠線の間には、左上が5、右が5、右が5です上書きすることができます。その場合、上の空白は30、下の空白は5になります。ここでは、drawrectメソッドのuiviewのサブクラス内にあるコードを示します。quartz2dを使った画像操作

このコードの境界線と画像を使用すると、境界線と画像の間に隙間ができなくなります。どのように私はそれを行うことができますか?

ありがとうございます。すべての

enter image description here

答えて

2

まず、あなたは深刻なバグがあります。この行は、間違っです:

[myImage release]; 

あなたがないがそれを解放する必要がありますので、あなたは、myImageを所有していません。 Cocoa Core Competenciesの「メモリ管理ルール」を読む必要があります。または、ARC(自動参照カウント)をオンにする必要があります。その後、コンパイラが自動的にリリースを行います。 ARCはiOS 4.0以降でサポートされているので、新しいアプリを開発している場合は、ほぼ確実にそれを使用しているはずです。

画像の描画については、画像を描画する矩形を変更するだけで済みます。たとえば、あなたがこのような下に5ピクセルの上にボーダー、左、右、および30ポイントの境界線を残すことができます:あなたは上に30ポイントの境界線が必要な場合

CGRect imageRect = CGRectInset(rectangle, 5, 5); // move 5 points in on all sides 
imageRect.size.height -= 25; // make it another 25 points shorter 
[myImage drawInRect:imageRect]; 

、あなたもする必要がimageRect.origin.yを変更してください。

+1

+1ココアコアコンピテンシーのリンクです。 – Vignesh

+0

リプレイとバグを指摘してくれてありがとう...コードとその作業を修正しましたが、画像が境界線から外れていて、左上の右下に広がっています。スクリーンショットを確認してください。国境の外ではなく国境の中に隙間を入れたい。 – supera

+1

私はあなたが*画像*を描画するために使用する四角形を変更する必要があると言いました。私はあなたが*境界線を描画するために使用する四角形を変更する必要があるとは言いませんでした。なぜ私は 'imageRect'という名前の新しい変数を作成したと思いますか? –