2016-08-25 7 views
0

사용자가 자유형을 그릴 수 있고 이미지에 이러한 모양을 채울 수있는 앱 섹션을 만들려고합니다.이미지를 채우기로 사용할 수있는 그리기 앱을 만드는 가장 좋은 방법

나는 UIBezierPaths와 CAShapeLayers를 사용 해보았으며 모든 이미지를 단일 색상으로 채우는 그리기 응용 프로그램을 만들 수있었습니다.

각 도형을 다른 색으로 채울 수 있기를 바랍니다. 결국 개별 도형을 별도의 이미지로 채울 수 있습니다.

각 도면을 분리하여 개별적으로 채울 수 없으며 지금까지 그림이있는 그림을 채울 수 없었습니다.

누구든지이 작업을 수행 할 수있는 다른 방법에 대한 제안 사항이 있으시면 언제든지 알려 주시면 감사하겠습니다.

답변

0

아마도 앱의 그림 부분에 SpriteKit을 사용하신 적이 있으십니까? Spritekit을 사용하면 SKShapeNode을 사용하여 도형을 만들고 fillColor 속성을 SKShapeNode으로 사용하여 여러 가지 색상으로 칠할 수 있습니다. 새로 만든 도형을 이미지로 채우려면 SKSpriteNode에 이미지를 놓고 SKCropNode을 사용하여 자르고 의 maskNode 속성을 SKShapeNode으로 설정하십시오.

Eample :

import UIKit 
import SpriteKit 

class DrawView: SKScene { 

    override func didMoveToView(view: SKView) { 
    scaleMode = .ResizeFill 
    backgroundColor = UIColor.whiteColor() 

    //creating a triangle and filling it with the color blue 
    let path = CGPathCreateMutable() 
    CGPathAddArc(path, nil, 160, 284, 0, 0, CGFloat(M_PI*2), true) 
    CGPathAddLineToPoint(path, nill, 60, 184) 
    CGPathAddLineToPoint(path, nill, 260, 184) 
    CGPathAddLineToPoint(path, nill, 60, 284) 

    let triangle = SKShapeNode() 
    triangle.lineCap = .Round 
    triangle.lineJoin = .Round 
    triangle.fillColor = UIColor.blueColor() 
    triangle.path = path 
    addChild(triangle) 

    //placing image into SKSpriteNode 
    let image = SKSpriteNode(imageNamed: "yourImage") 
    image.size = CGSizeMake(320, 568) 
    image.position = CGPointMake(160, 284) 

    //creating an SKCropNode 
    let imageCrop = SKCropNode() 
    imageCrop.position = CGPointMake(0, 0) 
    imageCrop.addChild(image) //adding image to the SKCropNode 
    imageCrop.maskNode = triangle //using the triangle created as a mask 
    addChild(imageCrop) 
    } 
} 

class ViewController: UIViewController { 
    override func viewDidLoad() { 

    //create spritekit scene 
    let skView = SKView(frame: CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)) 
    skView.center = CGPointMake(self.view.bounds.size.width/2, self.view.bounds.size.height/2) 
    self.view.addSubview(skView) 

    //add drawing view to the scene 
    let drawView = DrawView() 
    sKView.presentScene(drawView) 
    } 
} 

까다로운 부분이 SKShapeNode을 채우기 위해 SKSpriteNodeSKCropNode을 재배치 할 예정이다.