gpt4 book ai didi

java - Android保存坐标 Canvas 绘制圆并在不同设备上显示

转载 作者:行者123 更新时间:2023-12-02 13:34:10 25 4
gpt4 key购买 nike

class Draw extends View {
private Paint mPaint;
public Button mCircles;

DrawFragment mDrawFragment;
private Circle mCurrentCircle;
private List<Circle> mCircle= new ArrayList<>();

public Draw(Context context){
this(context,null);
}

public Draw(Context context, AttributeSet attrs) {
super(context, attrs);

mPaint=new Paint();
mPaint.setColor(Color.RED);
mPaint.setAlpha(80);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

for (Circle circle : mCircle) {
float x1 = circle.getCenter().x;
float x2 = circle.getFinal().x;
float y1 = circle.getCenter().y;
float y2 = circle.getFinal().y;

double radius = Math.sqrt(Math.pow(dpx1 - dpx2, 2) + Math.pow(dpy1 - dpy2, 2));

float rad = (float) radius;

canvas.drawCircle(dpx1, dpy1, rad, mPaint);
}

switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mCurrentCircle = new Circle(current);
mCircle.add(mCurrentCircle);
break;

case MotionEvent.ACTION_MOVE:
if (mCurrentCircle != null) {
mCurrentCircle.setFinal(current);
invalidate();
}
break;

case MotionEvent.ACTION_UP:
mCurrentCircle = null;
invalidate(); break;
}

}

Log.i(TAG, "onTouchEvent: at x="+current.x + ", y =" + current.y);

return true;
}

1.我正在保存在 Canvas 上绘制的这些圆圈的坐标,这是为了标记汽车上的损坏情况。 但是当我使用这些值在更大的设备上显示时,圆圈位置不完整..可以做什么?

最佳答案

所有坐标均引用具有由像素和每英寸像素确定的屏幕的设备。

  • 如果您希望在不同的设备上使用相同的信息,则必须设置一种适合您的 anchor 作为引用。
  • 例如,如果这些圆圈将绘制在汽车的背景图像上,您应该能够将主题引用到该图片的位置。
  • 有了这些信息,您应该能够在任何其他设备上重新绘制这些圆圈,因为坐标不是引用设备,而是引用汽车图像。

我希望这可以帮助您重新思考这个问题。

关于java - Android保存坐标 Canvas 绘制圆并在不同设备上显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43093348/

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