2011-02-10 3 views
1

Je voudrais combiner deux UIImages, une extensible et une normale. Le problème est que si je fusionne les images en utilisant UIGraphicsImageContext, l'image scond est également étirée (elle est au-dessus du premier comme il se doit, mais étiré). Est-ce que quelqu'un sait comment éviter cela?fusionner un UIImage extensible avec un UIImage extensible

Merci beaucoup!

appels de mon 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 

les deux méthodes sont les suivantes:

- (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; 
} 

Répondre

1

Je pense que le problème est que vous demandez à la fois des images pour dessiner dans le rectangle plein. Cela provoque l'étirement de votre deuxième image. Essayez d'utiliser image2.size pour image2 lors de la fusion des images. Vous devrez ajuster le placement en utilisant la coordonnée x/y lors du dessin du rectangle.

- (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; 
}