0

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

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

或者更重要的是:我如何才能跟踪我创建的元素我必须将它们放在某种堆栈上吗?如何保存刚刚创建的圆形元素以供以后参考?

4

2 回答 2

3

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

当我在学习画布并编写一个小游戏时,我会创建一个具有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并了解已放置在画布上的所有内容,并调用位置/颜色/您存储在类中的任何内容。您也可以扩展类等。

于 2012-12-03T16:57:27.793 回答
0

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

于 2012-12-03T17:07:50.447 回答