我正在开发的应用程序允许用户使用手指作为蜡笔填充图形中的颜色。有人能帮助我产生蜡笔效果吗? 提前谢谢。
答案 0 :(得分:0)
您可以参考下面给出的链接开始。在这里,您可以通过提供教程中给出的RGB值来更改笔颜色或蜡笔颜色。
http://www.ifans.com/forums/showthread.php?t=132024
您可以在屏幕上提供代表不同颜色的按钮,根据点击的按钮,您可以设置当前笔的RGB值并用手将颜色归档。
希望这会对你有所帮助。
答案 1 :(得分:0)
您将在drawRect中使用的标准Quartz调用:实际上不会为您提供使用任何默认行为寻找的蜡笔效果。
最简单的实现方法是创建一系列透明的蜡笔纹理。 Photoshop,Fireworks和许多其他绘图应用程序已经有用于蜡笔效果的画笔和线条样式,因此您可以简单地在透明背景上使用其中的一些来获得一些可行的“斑点”(小圆形蜡笔看起来透明的PNG)
然后,当用户在设备上拖动手指时,记录路径并沿路径绘制这些“splotch”图像。如果这个人来回抽出,会有更多的颜色,你会得到一个更暗(更坚固/更透明)的颜色。
这是解决此问题的一种非常粗略但常见的方法。你可以通过蒙版,模式,渐变和其他Quartz方法变得非常聪明,但是提供你想要的东西的复杂性可能会超出图像方法的简单性。
可以获得最佳效果的一些建议:
希望这很清楚,并给你一些想法。
请记住,一旦掌握了这种方法,您就可以绘制任何东西。除了蜡笔纹理,你可以拥有霓虹灯,星星,粒子效果,以及你能想象到的任何东西。
答案 2 :(得分:0)
尝试
class myView {
var crayon = UIColor(patternImage: UIImage(named: "acrayontexture")!)
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
firstTouch = (touches.first?.location(in: self))!
aPath.move(to: firstTouch)
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
if firstTouch != lastTouch {
lastTouch = (touches.first?.location(in: self))! ;
aPath.addLine(to: lastTouch)
setNeedsDisplay()
}
override func draw(_ rect: CGRect) {
let context = UIGraphicsGetCurrentContext() ;
context?.addPath(aPath)
context?.setLineWidth(10.0)
context?.setStrokeColor(crayon.cgColor) ;
context?.setLineCap(.round)
context?.setShadow(offset: CGSize(width: 5.0 , height: 4.0), blur: 4.0) ;
//
context?.strokePath()
}
}
}
`