0

LinerLayout を拡張してビューに多くの要素を追加するクラスを作成し、canvas.drawCircle(100, 100, 10) などで円を追加し、onTouchEvent を実装すると、その要素 (円) だけを再描画する方法がわかりません。どのパラメータを「Rect」に設定して、invalidate(Rect) に送信できるようにします。

ありがとう。

4

1 に答える 1

2

具体的な例として、このコード例はあなたが望むことをしていると思います。わかりやすくするために、座標を変数(cx、cy、r)に移動しました。あなたが言ったことに基づいて、LinearLayoutサブクラス内からこれを呼び出すと思います。

    int cx = 100;
    int cy = 100;
    int r = 10;

    canvas.DrawCircle( cx, cy, r );

    int l = cx - r - 1;
    int t = cy - r - 1;
    int r = cx + r + 1;
    int b = cy + r + 1;

    Rect bounds = new Rect(l, t, r, b);
    invalidate(bounds);

円を少しオーバーラップさせるために、すべての側面にピクセルを追加して、領域全体が無効になるようにしました。私の経験によると、負の値またはキャンバスの寸法を超える値を含めることができるようです。

于 2011-08-17T18:07:47.680 に答える