2016-08-25 2 views
0

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

Я попытался использовать UIBezierPaths и CAShapeLayers и смог создать приложение для рисования, которое заполняет все изображения одним цветом.

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

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

Если у кого есть предложения по другим путям, я мог бы сделать это, я был бы признателен за любые идеи!

ответ

0

Возможно, вы использовали SpriteKit для части вашего приложения? Используя Spritekit, вы можете создавать свои фигуры с помощью SKShapeNode и заполнять их разными цветами, используя свойство fillColorSKShapeNode. Для заполнения новой формы с изображением вы можете поместить свое изображение в SKSpriteNode, а затем обрезать его с помощью SKCropNode и установить свойство maskNodeSKCropNode на созданный вами 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) 
    } 
} 

Хитрость будет репозиционирование SKSpriteNode и SKCropNode заполнить SKShapeNode.

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