1

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

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

你更喜欢什么,为什么?

4

1 回答 1

0

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

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

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

于 2012-12-20T13:22:33.180 回答