如果我在画布中绘制一个新元素,我该如何保存该元素的位置?
Context2d context = canvas.getContext2d();
context.setStrokeStyle("black");
context.arc(50, 50, 20, 0, Math.PI*2);
context.stroke();
或者此外:我如何根本跟踪我创建的元素?是否有某种堆栈我必须放置它们?如何保存刚创建的圆形元素供以后参考?
答案 0 :(得分:2)
我的理解是,您不会像更改画布那样将对象保存到画布中。您创建的圆圈仅作为画布的一组命令存在,如果您希望以某种方式存储它,您需要创建一个存储它的对象。
当我学习画布并写了一个小游戏时,我会创建一个具有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
的集合,并且知道放在画布上的所有内容,并回想一下位置/颜色/您在课堂中存储的内容。你也可以扩展课程等。
答案 1 :(得分:0)
绘画是暂时的:一旦你绘制它,它就消失了。将形状对象存储在别处。然后,当您调用draw方法时,请使用对形状对象的引用,检索它们的参数。