GWT画布的命中检测 - 图纸的策略?

时间:2012-12-20 11:14:22

标签: java gwt java-canvas

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

  • 只需跟踪所有Shape坐标并在鼠标点击上迭代所有对象
  • 在鼠标点击上绘制鬼画布上的所有对象,并在每个对象绘制后使用isPointInPath()
  • 使用ghost-canvas并使用自己的颜色绘制每个对象(如#000001,#000002),并在Map中继续引用它们。然后只需检测ghost-canvas上的鼠标点击并获取属于pixelcolor
  • 下的pixelcolor的对象

你更喜欢什么,为什么?

1 个答案:

答案 0 :(得分:0)

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

我不确定你是怎么想要你的ghostcanvas工作,但imho画出任何额外的声音,如巨大的资源浪费。

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