繁体   English   中英

如何跟踪画布中的元素位置?

[英]How to keep track of element positions in canvas?

如果我在画布中绘制一个新元素,我该如何保存该元素的位置?

Context2d context = canvas.getContext2d();
context.setStrokeStyle("black");
context.arc(50, 50, 20, 0, Math.PI*2);
context.stroke();

或者此外:我怎么能在所有保持一个元素的轨道,我创造出来的? 是否有某种堆栈我必须放置它们? 如何保存刚刚创建的圆元素供以后参考?

我的理解是,您不会像更改画布那样将对象保存到画布。 您创建的圆圈仅作为画布的一组命令存在,如果您希望以某种方式存储它,则需要创建一个存储它的对象。

当我学习画布并写了一个小游戏时,我会创建一个具有draw(Canvas c)功能的对象。 在函数中,我会做任何在画布上绘制所需的操作,并且还保持可以在以后调用的X,Y坐标。

public class SomeDrawableObject implements Drawable {
  private float X;
  private float Y;

  public SomeDrawableObject(float X, float Y) {
    this.X = X;
    this.Y = Y;
  }

  @Override
  public void draw(Canvas c) {
    c.drawCircle(...);
    //or c.drawWHATEVER(...);
  }

  public float getX() {
    return X;
  }
  //etc.
}

然后,从修改画布的任何类中,您可以维护SomeDrawableObject的集合,并且知道放在画布上的所有内容,并调用位置/颜色/您在类中存储的任何内容。 您也可以扩展类等。

绘图是暂时的:一旦你绘制它,它就消失了。 将形状对象存储在别处。 然后,当您调用draw方法时,使用对形状对象的引用,检索它们的参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM