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

标签 java android android-canvas

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/

相关文章:

java - Hibernate DDL表动态创建

java - 创建具有运行时属性的扩展 "enum"

java - Java:在主线程中等待额外方法中的响应监听器

Android Canvas 填充背景色(Canvas应用)

android - 将 ImageView 转换为 Canvas 的 Drawable

java - 在接口(interface)中定义常量是什么意思?

javascript - 如何在 WebSockets Java 中发起服务器端消息?

java - 在运行另一个 Runnable 之前等待 Runnable 完成

android - 画廊中的图像缩略图刷新

android - 如何处理android中位图的OOM异常