GraphicsPath.AddCurve()步骤效果优化
发布时间: 2014-01-22 00:03:39 作者: rapoo
GraphicsPath.AddCurve()方法效果优化
描述:
做一个画笔小工具在触屏白板上使用,我使用GraphicsPath来保存鼠标移动过的轨迹,并将轨迹显示出来
问题:
显示出来的线条不够平滑,写字的时候也不流畅。
在这里寻求帮助,欢迎各位大神前来指导。
[解决办法]
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias
设置了吗
[解决办法]
http://www.codeproject.com/Articles/8494/DrawTools
这个软件,可以下载下来研究一下!
[解决办法]
这个原因有几个:1)取的鼠标点就是不连续的;2)半身绘制线的时候就有锯齿
处理方式:(我的建议)
1)以每三个点(如12345五个点,123算一组,345算是一组,其中务必公用一个顶点)为一组,绘制2次Bezier曲线;(线的宽度可以定义)
2)在最终显示的时候使用抗锯齿算法,如果嫌麻烦,可以简单使用超采样算法
这样您整个线是光滑的,而且线的细节(每个像素)也是光滑的
[解决办法]
见下贴2楼:
[解决办法]发现好像有一处遗漏:用二次Bezier曲线如果仅用一个公用顶点还是有可能不连续,所以,公用几个顶点可以再考虑,但一点应该是可行的,就是可以使用Bezier曲线,之所以选择2次Bezier仅仅是为了计算简单和速度上原因。
楼上说的“频率”不是很明白,之前我们的做法是判断一个线是否够“平直”,如果是平直的线,我们会用直线;对于不够平直的线是根据他们的“弯曲程度”确认应该使用的线段数 ---- 太多的曲线会影响效能