объединение растягиваемого UIImage с «нормальным» - PullRequest
1 голос
/ 10 февраля 2011

Я хотел бы объединить два UIImage, один растягивающийся и один "нормальный" один.Проблема заключается в том, что если я объединяю изображения с помощью UIGraphicsImageContext, изображение scond также растягивается (оно располагается поверх первого, как и должно быть, но растягивается).Кто-нибудь знает, как этого избежать?

Большое спасибо!

звонки из моего 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 Ответ

1 голос
/ 30 марта 2011

Я думаю, проблема в том, что вы просите, чтобы оба изображения нарисовали полный прямоугольник. Это заставляет ваше второе изображение растягиваться.

Попробуйте использовать 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...