По сути, я делаю представление с двумя изображениями. Изображение первое показано в правом треугольнике, занимающем верхний левый угол обзора, а изображение два занимает верхний правый треугольник, занимающий нижний правый угол.
Представьте себе квадрат, разрезанный по диагонали, в каждой полученной половине существует другое изображение.
Я много читал о масках, но я не хочу использовать другое изображение для маскировки этих изображений.
Я ищу способ дать ему 3 точки, которые образуют этот треугольник, а затем таким образом обрезать изображение.
Я чувствую, что это, наверное, легко сделать в Coregraphics, мне просто не хватает звонков, я думаю.
Любая помощь приветствуется!
1 ответ
Вот один из способов - использовать обтравочные контуры в контексте изображения. Пример для изображения размером 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();
Похожие вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.