2012-12-25 2 views
0

В принципе, я делаю вид, который имеет два изображения. Изображение один отображается в правом треугольнике, который занимает верхний левый угол обзора, а изображение два поднимает правый треугольник, который занимает нижнее правое.iOS UIImageView clip/mask image

Представьте себе квадратный разрез по диагонали, в каждой результирующей половине есть другое изображение.

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

Я ищу способ дать ему 3 точки, которые образуют этот треугольник, а затем закрепить изображение таким образом.

Я чувствую, что это, вероятно, легко сделать в Coregraphics, я просто пропускаю звонки, которые, как я думаю.

Любая помощь очень ценится!

ответ

2

Вот один из способов, используя обтравочные контуры в контексте изображения. Примером является размер изображения 256 x 256, но вы должны легко адаптировать его к вашим потребностям.

UIGraphicsBeginImageContext(CGSizeMake(256, 256)); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, 256); 
CGContextConcatCTM(context, flipVertical); 
CGContextBeginPath(context); 
CGContextMoveToPoint(context, 0, 0); 
CGContextAddLineToPoint(context, 0, 256); 
CGContextAddLineToPoint(context, 256, 256); 
CGContextClosePath(context); 
CGContextSaveGState(context); 
CGContextClip(context); 
CGContextDrawImage(context, CGRectMake(0, 0, 256, 256), [image1 CGImage]); 
CGContextRestoreGState(context); 
CGContextBeginPath(context); 
CGContextMoveToPoint(context, 0, 0); 
CGContextAddLineToPoint(context, 256, 0); 
CGContextAddLineToPoint(context, 256, 256); 
CGContextClosePath(context); 
CGContextSaveGState(context); 
CGContextClip(context); 
CGContextDrawImage(context, CGRectMake(0, 0, 256, 256), [image2 CGImage]); 
CGContextRestoreGState(context); 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); // image contains the result 
UIGraphicsEndImageContext(); 

 Смежные вопросы

  • Нет связанных вопросов^_^