【发布时间】:2015-09-22 16:00:46
【问题描述】:
我有一个 HTML 画布元素,并实现了一个画笔,它可以捕捉画布元素的 mousedown、mousemove 和 mouseup 事件。这一切都适用于在画布上绘图。但是,我认为我不喜欢如果您的鼠标在笔划中途离开画布,您将无法继续绘图。它只是切断它。在我看来,这对这个人非常无情,而且对用户不太友好。
如果您打开 Microsoft Paint 并开始使用画笔或椭圆或其他东西进行绘制,只要您从画布内开始,您就可以将鼠标拖动到屏幕上的任意位置,然后在任意位置重新进入画布。例如,它还可以很容易地在角落绘制四分之一圆,因为您可以将椭圆工具拖到屏幕外。我希望这是有道理的。
无论如何,我想知道是否有一种方法可以使用 HTML5 画布实现这一点,或者我将如何着手实现这类事情。用户将永远不必真正看到那里绘制的任何东西;它主要只是一个可用性功能。
编辑:很多这些解决方案的一个问题是如何处理坐标。目前我的画布在屏幕中间,画布的左上角是(0, 0),右下角是(500, 500)。坐标的平移工作也要考虑在内。
Edit2:我发现显然你可以很好地绘制画布边界。例如,您可以提供负的宽度、高度和坐标,canvas 元素会很好地处理它。所以基本上解决方案可能只涉及捕获文档的mousemove 和mouseup 并仅翻译x 和y 以从画布的左上角开始。
【问题讨论】:
-
能否在窗口本身上捕获鼠标事件,然后委托给画布?
-
也许尝试发布一个您目前拥有的示例。如果我们不必首先重新创建自己的“损坏”示例,那么提供帮助会更容易。
-
也许你也可以让画布元素在窗口的全宽和全高,并且画布内的绘图区域稍微小一些?
-
@AidasBendoraitis:这也是个好主意。让我快速尝试一下。
-
@zero298:你能告诉我怎么做吗?
标签: javascript jquery html canvas bounds