如果我在画布中绘制一个新元素,如何保存此元素的位置?如何跟踪画布中的元素位置?
Context2d context = canvas.getContext2d();
context.setStrokeStyle("black");
context.arc(50, 50, 20, 0, Math.PI*2);
context.stroke();
或者另外:我怎么能在所有保持跟踪我创建了一个元素?是否有某种堆叠需要放置?我怎样才能保存刚创建的圆形元素供以后参考?
如果我在画布中绘制一个新元素,如何保存此元素的位置?如何跟踪画布中的元素位置?
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
集合,并知道已被置于画布上和召回无论你已经保存在类职位/颜色/一切。您也可以扩展课程等。
绘图是暂时的:一旦你画出来,它就消失了。将形状对象存储在别处。然后,当您调用绘图方法时,请使用对形状对象的引用,检索其参数。
好吧,我明白了。但我想知道我是否正朝着正确的方向前进:我的目标是创建可以用鼠标绘制的drawable(椭圆,圆形,矩形),并且以后也可以拖动。这就是为什么我必须存储职位。当然拖放也应该可以在画布上看到。那么我是不是必须总是重新绘制那个对象所在的旧区域,然后再绘制新的区域?没有更好的方法吗? – membersound
不是我意识到不幸。游戏GUI循环如你所描述的那样工作:重绘画布并从那里构建事物。我会说你在正确的轨道上,但也许比你讨价还价得多。通过扫描形状列表,然后使用Android'onTouch'事件来计算拖动,您可以检测到您的点击是否位于对象的区域内 – Grambot