【问题标题】:Developing a real-time graphical editor开发实时图形编辑器
【发布时间】:2012-09-20 10:43:10
【问题描述】:

我需要在我的 Flash Web 应用程序中嵌入一个 vector 图形编辑器。图形编辑器应该能够执行以下操作:

  • 画线(画笔工具)
  • 擦除
  • 按比例绘制
  • 创建文本块
  • 使用图像作为绘图的背景(上传图像并将其用作背景)。

用户所做的更改应发送到其他活动客户端。我试图找到以下问题的答案。

  1. 画线应该如何实现?我的意思是:用户在屏幕上移动鼠标(鼠标左键向下),我应该如何处理 MOUSE_MOVE 事件?请注意,在绘制之后,用户可能希望缩放绘图。
  2. 应该如何进行擦除?请注意,我无法将擦除实现为绘制白线(因为我可以有背景)。
  3. 存放拉丝翼的最佳方法是什么?序列化一组命令?
  4. 最后,如何才能将更改通知其他客户?

将不胜感激任何关于如何创建类似于描述的图形编辑器的文章或教程(无论在什么平台或编程语言上)。

请不要害羞 :) 任何想法都非常感谢!

【问题讨论】:

    标签: flash web-applications graphics drawing


    【解决方案1】:

    我会尝试回答一些问题,因为我从来没有做过所有的事情。

    1. 取决于工具,最简单的实现是仅绘制直线的铅笔工具。更复杂的工具,比如铅笔,应该跟随你可以移动的锚点,实际上并没有那么不同,事实上,很容易,因为你只需要使用从用户那里收到的锚点参数。最复杂的工具是跟随画笔,因为它在画布上任意移动。您需要为矢量形状实现“联合”操作。这并不容易,需要一些数学才能找到交点。必须有专门的文献来描述如何做到这一点。您需要创建更小的形状,以离散间隔对鼠标指针的位置进行采样,然后将它们“联合”在一起。

    2. 擦除与上述画笔工具非常相似。

    3. 我会写 SWF 格式,最坏的情况 - SVG。 SWF 的优点是很容易在同一程序/环境中使用图纸。 SVG 的优点是即使在没有 Flash 的情况下您也可以使用它。

    也许一个很好的起点可能是查看 Inkscape 源代码(可能是最流行的开源矢量图形编辑器)。坦率地说...这是一个有缺陷/不稳定的程序,但至少其中一些应该可以工作。

    【讨论】:

    • 感谢您的回答。好吧,我想我应该强调主要问题是告诉其他客户画了一些东西(用笔或其他东西)。你对那个怎么想的?我想最好的方法是发送命令并将图像存储为一组命令
    【解决方案2】:

    这听起来很难。这种项目一开始看起来很容易,但实际上要获得与真正的矢量编辑器相媲美的东西真的很复杂。

    我会尝试找到一个现有的库来嵌入,而不是自己做。我尝试了一些搜索,但在 Flash 中找不到功能性矢量编辑器。另一方面,HTML5/Javascript 中有很多类似svg-edit。也许您可以想办法启动 Javascript 编辑器并将结果汇​​集到 Flash 中?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-28
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多