如何平滑ipad中的线条

发布于 2024-10-21 22:19:48 字数 500 浏览 10 评论 0原文

我记录了用户触摸开始移动结束 ipad 时的每个点,然后将这些点添加到名为 pathCGMutablePathRef 中,然后使用以下代码来绘制线条(路径)用户在 ipad 中触摸。

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetLineJoin(context, kCGLineJoinRound);
CGContextSetStrokeColorWithColor(context, [UIColor redColor]);
CGContextSetLineWidth(context, 2);
CGContextAddPath(context, path);
CGContextStrokePath(context);

但这些线条看起来并不平滑,谢谢你的帮助

i have recorded each point when user touch begin move end the ipad,and then i add these points in to a CGMutablePathRef called path, then i use following code to draw the lines(path) user touched in ipad.

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetLineJoin(context, kCGLineJoinRound);
CGContextSetStrokeColorWithColor(context, [UIColor redColor]);
CGContextSetLineWidth(context, 2);
CGContextAddPath(context, path);
CGContextStrokePath(context);

but these lines didn't look smooth, thanks for your help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

将军与妓 2024-10-28 22:19:48

您可以通过使用以下方法获得更多平滑度:

UIGraphicsBeginImageContext(self.frame.size);
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineJoin(UIGraphicsGetCurrentContext(), kCGLineJoinRound);
CGContextSetAllowsAntialiasing(UIGraphicsGetCurrentContext(), YES);
CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), YES);
CGContextSetMiterLimit(UIGraphicsGetCurrentContext(), 2.0);

但如果您需要绘制非常平滑的线条/曲线,那么您需要使用 UIBezierCurve 或任何其他曲线算法重新绘制线条。

编辑:我对代码做了一些更改以实现平滑绘图。检查我的经典看板应用:https://itunes.apple.com/app/id493525167

You may achieve more smoothness by using the following:

UIGraphicsBeginImageContext(self.frame.size);
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineJoin(UIGraphicsGetCurrentContext(), kCGLineJoinRound);
CGContextSetAllowsAntialiasing(UIGraphicsGetCurrentContext(), YES);
CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), YES);
CGContextSetMiterLimit(UIGraphicsGetCurrentContext(), 2.0);

But if you need to draw very smooth lines/curves, then you need to redraw lines by using UIBezierCurve or any other curving algorithms.

Edit: I did some changes in my code for smooth drawing. Check my classic board app: https://itunes.apple.com/app/id493525167

醉梦枕江山 2024-10-28 22:19:48

您需要将其添加到第一行之后。

CGContextSetAllowsAntialiasing(context, true);

You will need to add this just after you first line.

CGContextSetAllowsAntialiasing(context, true);
小姐丶请自重 2024-10-28 22:19:48

我建议你使用 Cocos2d 来获得完美平滑的线条。您可能想看一下这个。 https://github.com/krzysztofzablocki/smooth-drawing

I'd suggest you to use Cocos2d for perfectly smooth lines. You might want to have a look at this one. https://github.com/krzysztofzablocki/smooth-drawing

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文