gpt4 book ai didi

Android:如何在两点内画圆?

转载 作者:太空狗 更新时间:2023-10-29 13:53:45 24 4
gpt4 key购买 nike

这是我当前的代码

Path path_eclipse = new Path();
float radius = (float) (Math.sqrt(Math.pow(r.stopX - r.startX, 2.0f) + Math.pow(r.stopY - r.startY, 2.0f)) / 2.0f);
path_eclipse.addCircle(r.startX, r.startY, radius, Path.Direction.CCW);
canvas.drawPath(path_eclipse, paint);

使用这段代码,我得到了输出:

enter image description here

但是我想画这样的圆:

enter image description here

已更新源代码:此源代码适用于我的案例[已解决]

[开画]

@Override
protected void onDraw(Canvas canvas) {
Path path_eclipse = new Path();
float centerX = (r.startX + r.stopX) /2;
float centerY = (r.startY + r.stopY) /2;
float radius = (float)Math.sqrt((r.stopX - r.startX)*(r.stopX - r.startX)+(r.stopY - r.startY)*(r.stopY - r.startY));
path_eclipse.addCircle(centerX, centerY, radius/2, Path.Direction.CCW);
canvas.drawPath(path_eclipse,paint);
}

[OnTouchEvent]

@Override
public boolean onTouchEvent(MotionEvent event) {
float eventX = event.getX();
float eventY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = eventX;
startY = eventY;
return true;
case MotionEvent.ACTION_MOVE:
stopX = eventX;
stopY = eventY;
break;
case MotionEvent.ACTION_UP:
stopX = eventX;
stopY = eventY;
break;
default:
return false;
}
invalidate();
return true;
}

最佳答案

addCircle的前两个参数是中心的 x 和 y 坐标。假设 A 和 B 是你想要的圆上彼此最远的距离,那么中心应该是一个与两者等距的点,因此:

float centerX = (pointA.x + pointB.x) /2
float centerY = (pointA.y + pointB.y) /2

你的半径应该是 A 和 B 之间的距离,因此:

float radius = (Math.sqrt(Math.pow(x2−x1, 2) + Math.pow(y2−y1, 2))) / 2

关于Android:如何在两点内画圆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42085507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com