Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GWT画布的命中检测-绘图采用哪种策略?_Java_Gwt_Java Canvas - Fatal编程技术网

Java GWT画布的命中检测-绘图采用哪种策略?

Java GWT画布的命中检测-绘图采用哪种策略?,java,gwt,java-canvas,Java,Gwt,Java Canvas,我正在用GWT Canvas Java创建一些类似于绘图/流程图/UML图的工具。 对于我的绘画命中检测,我可以想象3种不同的策略,但我不知道哪一种最适合我的目标 只需跟踪所有形状坐标并在鼠标单击上迭代所有对象 在鼠标单击的重影画布上绘制所有对象,并在每次绘制对象后使用isPointInPath 使用重影画布,用自己的颜色绘制每个对象,如000001、000002,并在地图中保留它们的引用。然后在鬼画布上检测鼠标点击,得到属于鼠标下像素颜色的对象 你喜欢什么,为什么?我认为第一种方法最好, 很有

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

只需跟踪所有形状坐标并在鼠标单击上迭代所有对象 在鼠标单击的重影画布上绘制所有对象,并在每次绘制对象后使用isPointInPath 使用重影画布,用自己的颜色绘制每个对象,如000001、000002,并在地图中保留它们的引用。然后在鬼画布上检测鼠标点击,得到属于鼠标下像素颜色的对象
你喜欢什么,为什么?

我认为第一种方法最好, 很有可能,当你想移动或调整显示对象的大小时,你会保留对形状ie的引用,所以你需要做的就是实现额外的方法布尔值isInPoint mouseclick,shape shape,因为if的实现对于每种类型的对象可能不同,如果你把它放在你的形状上会更好

我不知道你想要你的ghostcanvas作品怎么样,但是我怎么画任何额外的东西听起来像是巨大的资源浪费

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