我需要将矢量图形编辑器嵌入到我的flash web应用程序中。图形编辑器应该能够做到以下几点:
- 绘制线条(画笔工具)
- 擦除
- 比例图
- 创建文本块
- 使用图像作为绘图的背景(上传图像并将其用作背景)
用户所做的更改应发送到其他活动客户端。我正在努力寻找以下问题的答案。
- 应该如何实现划线?我的意思是:用户在屏幕上移动鼠标(按下鼠标左键),我应该如何处理mouse_MOVE事件?请注意,绘制后,用户可能希望缩放绘制
- 擦除应该如何实现?请注意,我不能将擦除实现为绘制白线(因为我可以有背景)
- 存放抽绳的最佳方式是什么?序列化一组命令
- 最后,如何将更改通知其他客户
如果您有任何关于如何创建与所述类似的图形编辑器的文章或教程(无论在什么平台或编程语言上),我们将不胜感激。
请不要害羞:)任何想法都非常感谢!
我会试着回答一些问题,因为我从来没有做过所有的问题。
-
根据工具的不同,最简单的实现方式是只画直线的铅笔工具。更复杂的工具,比如铅笔,应该跟随你可以移动的锚点,实际上并没有那么不同,事实上,它非常容易,因为你只需要简单地使用从用户那里收到的锚点参数。最复杂的工具是跟随笔刷在画布上任意移动。您需要为矢量形状实现"并集"运算。这并不容易,需要一些数学运算才能找到交点。必须有专门的文献来描述如何做到这一点。您需要创建较小的形状,以离散的间隔对鼠标指针的位置进行采样,然后将它们"并集"在一起。
-
擦除与上面描述的笔刷工具非常相似。
-
我会写SWF格式,最坏的情况是SVG。SWF的优点是可以很容易地在同一程序/环境中使用图形。SVG的优点是,即使在Flash不可用的情况下也可以使用它。
也许一个好的起点是研究Inkscape源代码(可能是最流行的开源矢量图形编辑器)。坦白地说这是一个有缺陷/不稳定的程序,但至少其中一些应该可以工作。
这听起来很难。这是一个一开始看起来很容易的项目,但实际上要获得与真正的矢量编辑器相当的东西真的很复杂。
我会尝试找到一个现有的库来嵌入,而不是自己做。我尝试了几次搜索,但在Flash中找不到函数矢量编辑器。另一方面,HTML5/Javascript中有很多类似svg编辑的内容。也许你可以找到一种方法来启动Javascript编辑器,并将结果反馈到Flash中?