首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建可以使用图像作为填充的绘图应用程序的最佳方式

创建可以使用图像作为填充的绘图应用程序的最佳方式
EN

Stack Overflow用户
提问于 2016-08-25 20:32:37
回答 1查看 179关注 0票数 0

我正在尝试创建一个应用程序的一部分,在那里用户可以绘制自由式形状,并用图像填充这些形状。

我已经尝试使用UIBezierPaths和CAShapeLayers,并且已经能够创建一个绘图应用程序,它用一种颜色填充所有图像。

我希望每个形状都能用不同的颜色填充,所以最终每个形状都可以用不同的图像填充。

我在分离每个图形以便可以单独填充它们时遇到了问题,并且到目前为止还无法用图像填充图形。

如果任何人有其他的建议,我可以做这件事,我将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2016-08-26 13:01:57

你有没有想过在你的应用程序的绘图部分使用SpriteKit?使用Spritekit,您可以使用SKShapeNode创建形状,并使用SKShapeNodefillColor属性用不同的颜色填充它们。为了用图像填充新创建的形状,您可以将图像放在SKSpriteNode中,然后使用SKCropNode对其进行裁剪,并将SKCropNodemaskNode属性设置为您创建的SKShapeNode

例如:

代码语言:javascript
运行
复制
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)
  }
}

棘手的部分将是重新定位SKSpriteNodeSKCropNode以填充SKShapeNode

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39145430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档