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

描画は一時的なものです。描画すると、消えてしまいます。シェイプオブジェクトを別の場所に保存します。次に、drawメソッドを呼び出すときに、シェイプオブジェクトへの参照を使用して、それらのパラメーターを取得します。

于 2012-12-03T17:07:50.447 に答える