java - GWT Canvas 的命中检测 - 绘图的哪种策略?

标签 java gwt java-canvas

我正在使用 GWT Canvas (Java) 创建某种绘图/流程图/UML 图表之类的工具。 对于我的绘图的命中检测,我可以想象 3 种不同的策略,但我不知道哪一种最适合我的目标。

  • 只需跟踪所有形状坐标并在鼠标单击时迭代所有对象
  • 通过鼠标点击在幽灵 Canvas 上绘制所有对象,并在每次对象绘制后使用 isPointInPath()
  • 使用幽灵 Canvas 并用自己的颜色绘制每个对象(如#000001、#000002),并在 map 中保留它们的引用。然后只需检测ghost-canvas上的鼠标点击并获取属于鼠标下的pixelcolor的对象

您更喜欢什么,为什么?

最佳答案

我认为第一种方法是最好的, 您很可能会保留对形状的引用(即,当您想要移动或调整显示对象的大小时),因此您需要做的就是实现额外的方法 boolean isIn(Point mouseclick,Shape shape) (因为每种类型的对象的 if 实现可能不同,如果将它放在 Shape 上会更好)

我不确定你希望 Ghostcanvas 如何工作,但恕我直言,绘制任何额外的东西听起来像是对资源的巨大浪费。

您的第三个策略将需要从图像/ Canvas 中获取原始像素,这可能是昂贵的操作

关于java - GWT Canvas 的命中检测 - 绘图的哪种策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13970955/

相关文章:

java - 图形的仿射变换,而不是文本和标签

java - 我应该使用 Canvas 还是 GWTCanvas?

java - 使用 JavaFX 使用 Canvas 绘制一个移动的球

java - 尝试将二维数组中的元素复制到另一个二维数组中

java - 滚动 Pane 到图

java - PhoneGap : Remote Logging with gwt-log

java - GWT RequestFactory 返回一个空对象

java - GWT 单元表问题

java - 有没有一种干净的方法来读取嵌入式 SQL 资源文件?

java - 无法解析模板 "Class"