samedi 2 juillet 2016

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


I'm making a game where the user can draw lines with finger. There are tons of methods on websites. I tried two methods, one using CGContext in UIView (UIKit), and the other using CGPath and SKShapeNode in SpriteKit. But the latter shows much better quality. The first one using CGContext has ugly rough edges. Please see following screen shots. I also attached part of code for both methods here, (in the touchesMove function). Note: var ref = CGPathCreateMutable() CGContext in UIView 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() SKShapeNode in SpriteKit Note: var lineDrawing = SKShapeNode() CGPathAddLineToPoint(ref, nil, location.x, location.y) lineDrawing.path = ref lineDrawing.lineWidth = 3 lineDrawing.strokeColor = UIColor.blackColor() lineDrawing.alpha = 1.0 self.addChild(lineDrawing) How can I draw lines in UIView with the same quality of SKShapeNode?

Aucun commentaire:

Enregistrer un commentaire