如何在android中为paint创建这种类型的画笔

Pra*_*tik 9 android brush paint android-canvas

可能重复如何在android中为画布制作自定义画笔?

你好朋友,

我太坚持为绘画应用创建这种类型的画笔,但没有找到任何与此相关的内容.

我是绘画/画布的新手,所以我对基本已经完成没有这方面的知识但是对于像创建画笔这样的效果我没有像创建/实现它那样的东西.有没有人有这样的例子或代码?

我需要这种类型的刷子用于我的应用简单的一个例子需要理解:

在此输入图像描述

谢谢.

Can*_*ner 8

我想没有简单的方法.我发现这个讨论,特别是以下帖子很有趣:

专业计算机图形学从未如此简单 这就是为什么很少有人真正解决它的原因.更糟糕的是,专业技术很少发表.我不知道你想要付出多少努力,但我会给你一些启发.所以,如果你愿意,你可以学习,发展并获得最佳方式.如果对你来说似乎太难了,那就把它作为好奇心吧.

现在制作书法画笔的专业方法是这样的:

主曲线是平滑的,因为它是基于样条曲线绘制的.要获得更专业的结果,请构造两个样条线:一个使用位于样条线上的点(例如,来自鼠标事件),另一个使用像样条控制点之类的点.因此,您绘制的曲线是从这两个样条曲线的插值生成的曲线.这样,您就可以绘制"主曲线".

您还应该具有必须应用变化的"主厚度".根据您想要的结果计算厚度变化.更常见的一种书法画笔就像你链接的图像一样:弯曲的区域通常比直的区域更薄.这是更常见的类型,因为大多数设计师在使用平板电脑绘图时会得到这种结果,因此程序会模拟这种行为.特别地,该效果通常使用基于主样条的第二导数的函数来计算.厚度变化幅度可以是可配置值.

细长曲线尖端是在额外的计算中完成的.有时,使用样条或某种"ceil函数"平滑厚度变化也是一个好主意.

如果你把一切都搞定了,你的手上就会有一条很粗的(当然是封闭的)曲线.使用您可以开发的最佳填充算法绘制它.如果可以,请使用消除锯齿功能.

当用户移动鼠标时,可以实时计算所有这些技术.得到的分数越多,计算得越多,但效果很好,因为您已经进行的大多数计算仍然有效.通常你只需要重建一个小(最后)部分.

最后一个建议:永远不要使用函数回归方法进行2D平滑,除非你的点真正代表一个函数(所以你需要尽可能地保持点的"数学意义").我无法想象一种较慢的方法来平滑没有特殊语义的点.唯一的例外是当你有非常非常稀疏的点并且输入顺序无关紧要时,但当有人用画笔绘制时并非如此.