我想以任意方式扭曲圖像,例如貝塞爾形狀。我已經使用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