我想以任意方式扭曲图像,例如贝塞尔形状。我已经使用CAShapeLayer来创建形状,但似乎将其内容设置为图像不起作用。我怎样才能让图像变形后形状?它甚至有可能吗?是否可以添加背景图片到CAShape? (iPhone)
谢谢!
我想以任意方式扭曲图像,例如贝塞尔形状。我已经使用CAShapeLayer来创建形状,但似乎将其内容设置为图像不起作用。我怎样才能让图像变形后形状?它甚至有可能吗?是否可以添加背景图片到CAShape? (iPhone)
谢谢!
这是目前不可能的。如果您认为应该支持,我会建议提交雷达(http://bugreport.apple.com)。
参见:Can a CGImage be added to the contents property of a CAShapeLayer?
它是不可能这样做的,但我成功地通过把一个的CALayer在上面CAShapeLayer这样做。 这是我的代码:
CALayer *image =[CALayer layer];
image.frame = CGRectMake(0, 0, 75, 75);
image.contents = (id) [UIImage imageNamed:@"number-1"].CGImage;
[self.layer addSublayer:image];
UIBezierPath *circle = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 75, 75)];
blueCircleLayer = [CAShapeLayer layer];
blueCircleLayer.path = circle.CGPath;
blueCircleLayer.strokeColor = [UIColor blueColor].CGColor;
blueCircleLayer.fillColor = [UIColor clearColor].CGColor;
blueCircleLayer.shadowColor =[UIColor blackColor].CGColor;
blueCircleLayer.shadowOffset = CGSizeMake(0.0f, 5.0f);
blueCircleLayer.shadowOpacity = 0.7f;
blueCircleLayer.lineWidth = 7.0;
[self.layer addSublayer:blueCircleLayer];
在正确的轨道上,扩展从此并将'image'的掩码设置为'blueCircleLayer'。 – 2017-09-01 14:00:42
嗨casademora,谢谢你的回答。那么扭曲形状的最佳方式是什么,例如贝塞尔路径?我必须移动到OpenGL ES和纹理吗? – LocoMike 2011-04-29 08:33:23
当我发现该选项不受支持时,我停止了我的调查。我的猜测是,使用OpenGL会给你更多的选择......你可以创建一个形状,并将图像映射为纹理,但这与我对openGL的了解一样多::( – casademora 2011-05-03 19:55:02