KineticJS – 用鼠标自由绘制

我正在构建一个canvas绘画工具,使用它只需拖动鼠标在canvas上绘制。 据我所知,线条是这项工作的最佳方式。 所以在鼠标按下时我会创建一个KineticJS Line对象,当用户拖动时,我会在最后一个鼠标位置和当前位置之间添加一个点。 注意,我只有一个有多个点的线对象。

当用户释放鼠标时,Line已完成,每当您再次单击以绘制更多内容时,我都会创建一个新的线对象。

问题在于,如果要绘制文本,请说“我的名字是x”,这将产生许多行对象,每个字符为1(“x”和“i”为2)。

有一个更好的方法吗? 我的想法是只有一个线对象,并且你只是不能从前一个位置添加一条线,然后当你拖动它时。 但我不认为KineticJS Line支持这一点。

所以基本上,我可以改进我让用户绘制的方式吗?

您当前设计的1-2个折线定义一个字母是好的。

canvas和Kinetic都可以在性能滞后之前支持整段字符。

如果您想要对整个句子使用1个单一定义,则可以使用自定义Kinetic.Shape。

使用Shape,您可以完全访问包装的canvas上下文。 您可以使用该上下文来完成您的第二个想法 – 单个context.path通过一组保存的moveTo和lineTo命令绘制一个句子。

就个人而言,我会选择你当前的设计(每个字符1-2个折线),因为性能很好,你可以获得更大的灵活性。 (例如,如果要在当前设计中以不同颜色绘制人名,则更容易)。