2011-02-10 4 views
1

2本のUIImageを結合したいと思います。問題は、私がUIGraphicsImageContextを使ってイメージをマージすると、scondイメージも伸びていることです(最初のものの上にありますが、伸びています)。誰もこれを避ける方法を知っていますか?伸縮性のあるUIImageを「通常の」ものとマージする

ありがとうございます!私のViewControllerから

呼び出し:

UIImage *stretchImage = [[UIImage imageNamed:@"stretchableLeft.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:16.0]; 
    stretchImage = [self imageWithImage:stretchImage scaledToSize:CGSizeMake(64.0, 64.0)]; 
    stretchImage = [self mergeImageWithImage:stretchImage secondImage:[UIImage imageNamed:@"topImage.png"]]; // only 40x40 Px 

二つの方法があります:

- (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize 
{ 
UIGraphicsBeginImageContext(newSize); 
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

return newImage; 


- (UIImage*)mergeImageWithImage:(UIImage *)image secondImage:(UIImage *)image2 
{ 
UIGraphicsBeginImageContext(image.size); 
[image drawInRect:CGRectMake(0,0,image.size.width,image.size.height)]; 
[image2 drawInRect:CGRectMake(10,10,image.size.width,image.size.height) blendMode:kCGBlendModeNormal alpha:1.0]; 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

return newImage; 
} 

答えて

1

私は問題はあなたが完全な四角形で描画する両方の画像を求めているということだと思います。つまり、2枚目の画像が伸びています。

イメージをマージするときにimage2.sizeをimage2に使用してみてください。矩形を描くときは、x/y座標を使用して配置を調整する必要があります。

- (UIImage*)mergeImageWithImage:(UIImage *)image secondImage:(UIImage *)image2 
{ 
UIGraphicsBeginImageContext(image.size); 
[image drawInRect:CGRectMake(0,0,image.size.width,image.size.height)]; 
[image2 drawInRect:CGRectMake(10,10,image2.size.width,image2.size.height) blendMode:kCGBlendModeNormal alpha:1.0]; 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

return newImage; 
} 
関連する問題