关于swift:iOS使用CGContext画线的质量比SpriteKit中的SKShapeNode差很多

iOS the quality of drawing lines using CGContext is much worse than SKShapeNode in SpriteKit

我正在制作一个用户可以用手指画线的游戏。网站上有很多方法。我尝试了两种方法,一种在 UIView (UIKit) 中使用 CGContext,另一种在 SpriteKit 中使用 CGPath 和 SKShapeNode。但后者显示出更好的质量。第一个使用 CGContext 有丑陋的粗糙边缘。

请查看以下屏幕截图。我还在此处附上了这两种方法的部分代码(在 touchesMove 函数中)。

注意:var ref = CGPathCreateMutable()

UIView 中的CGContext
enter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    CGPathAddLineToPoint(ref, nil, currentPoint.x, currentPoint.y)

    UIGraphicsBeginImageContext(self.frame.size)
    let context = UIGraphicsGetCurrentContext()
    tempImageView.image?.drawInRect(CGRect(x: 0, y: 0, width: self.frame.size.width, height: self.frame.size.height))

    CGContextAddPath(context, ref)

    // 3
    CGContextSetLineCap(context, CGLineCap.Round)
    CGContextSetLineWidth(context, brushWidth)
    CGContextSetRGBStrokeColor(context, red, green, blue, 1.0)
    CGContextSetBlendMode(context, CGBlendMode.Normal)

    // 4
    CGContextStrokePath(context)

    // 5
    UIGraphicsEndImageContext()

SpriteKit 中的 SKShapeNode
enter

1
2
3
4
5
6
CGPathAddLineToPoint(ref, nil, location.x, location.y)
lineDrawing.path = ref
lineDrawing.lineWidth = 3
lineDrawing.strokeColor = UIColor.blackColor()
lineDrawing.alpha = 1.0
self.addChild(lineDrawing)

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/268585.html

(0)
上一篇 2022年6月20日
下一篇 2022年6月20日

相关推荐

发表回复

登录后才能评论