Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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 从选择中检索中心点XY坐标_Java_Android_Coordinates - Fatal编程技术网

Java 从选择中检索中心点XY坐标

Java 从选择中检索中心点XY坐标,java,android,coordinates,Java,Android,Coordinates,我的目标是允许我的Android应用程序的用户选择面部的点,并从触摸中检索X和Y坐标。请看下图 我希望用户能够更改选择方块的大小 到目前为止,我有下面的代码,但我真的不知道从那里去。如何绘制一个用户可以操纵和移动的矩形(然后从该矩形返回X和Y中心点坐标) 谢谢大家! 可能有用的是: 我不确定你已经完成了多少应用程序。但是,您需要一种方法来识别移动正方形与拉伸正方形。您可以通过按钮或在设计上执行此操作(从正方形内部移动并从边界拉伸) 您需要查看如何重新绘制正方形的示例。我不知道你一开始是怎么画的

我的目标是允许我的Android应用程序的用户选择面部的点,并从触摸中检索X和Y坐标。请看下图

我希望用户能够更改选择方块的大小

到目前为止,我有下面的代码,但我真的不知道从那里去。如何绘制一个用户可以操纵和移动的矩形(然后从该矩形返回X和Y中心点坐标)

谢谢大家!

可能有用的是:

我不确定你已经完成了多少应用程序。但是,您需要一种方法来识别移动正方形与拉伸正方形。您可以通过按钮或在设计上执行此操作(从正方形内部移动并从边界拉伸)

您需要查看如何重新绘制正方形的示例。我不知道你一开始是怎么画的

编辑:这里有一些有用的资料。如果将两者结合起来,您应该能够轻松实现您的目标:


既然您已经获得了触摸点,您所能做的就是在其周围绘制一个默认大小的矩形或正方形

Point touchPoint=new Point(x, y);
Paint paint = new Paint();
paint.setColor(Color.parseColor("#00CCFF"));
canvas.drawRect(x, y, x+100, y+100, paint);
然后,根据矩形中的接触点,您可以拖动或缩放矩形。
有一个谷歌教程,你可以用它来拖动和缩放矩形。
请在下面的链接中查找。

如果我根据您的代码正确理解,那么您使用的是
SurfaceView
以便在其中绘制,您可以在
private void drawMyStuff(最终画布)
中阅读公认的答案,您必须将代码放入其中以绘制所需的矩形,然后调用
invalidate()
每次更改某些内容(如坐标)时重新绘制
表面视图

您还可以创建自己的自定义
视图
并在其中绘制,您可以看到我在项目中使用的工作示例

您已经拥有触摸屏的(x,y)坐标,因此可以使用
画布在
SurfaceView
中绘制矩形。这里有一些可供参考的代码,您所要做的就是根据要绘制的(x,y)坐标更改数字:

Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setStrokeWidth(3);
canvas.drawRect(30, 30, 80, 80, paint);
paint.setStrokeWidth(0);
paint.setColor(Color.CYAN);
canvas.drawRect(33, 60, 77, 77, paint );
paint.setColor(Color.YELLOW);
canvas.drawRect(33, 33, 77, 60, paint );
现在要调整矩形的大小,必须将坐标保存在某个位置,可以使用保存每个矩形的坐标。然后,要重新调整它们的大小,您可以从触摸屏上读取坐标,并查看它们是否靠近某些矩形坐标。我说near是因为很难精确地触摸到角点的坐标,你必须看看它是否在角点附近的+10像素范围内。注意矩形的大小,也许这10个像素就是矩形的宽度或高度

最后,在
ACTION\u DOWN
上,当我在
ACTION\u UP
之前和
ACTION\u DOWN
上书写时,您跟踪角点,在
ACTION\u DOWN
上获取之前检测到的角点的新坐标,然后调用
invalidate()
重新绘制矩形,就完成了


我希望你能理解我,并在某种程度上帮助你:)

你能发布结果图像吗?如果我把这张图像做成选中的黄色矩形,那么结果会是什么样子?
Point touchPoint=new Point(x, y);
Paint paint = new Paint();
paint.setColor(Color.parseColor("#00CCFF"));
canvas.drawRect(x, y, x+100, y+100, paint);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setStrokeWidth(3);
canvas.drawRect(30, 30, 80, 80, paint);
paint.setStrokeWidth(0);
paint.setColor(Color.CYAN);
canvas.drawRect(33, 60, 77, 77, paint );
paint.setColor(Color.YELLOW);
canvas.drawRect(33, 33, 77, 60, paint );