38

キャンバス上に四角形を描画しようとしていますが、Android の四角形描画の詳細を理解するのに苦労しています。チュートリアルと可能な限りすべてを読みましたが、行き詰まっています。

この画像では、赤い四角形がターゲットです。 ここに画像の説明を入力

長方形のサイズに関係なく、赤い長方形をベースの上と長方形の中央に少し描画する必要があります。ここで私が直面している最悪の悪夢は、X、Y の幅と高さの座標を理解することです。

その数学がどのように機能するかを誰でも説明できますか? いつか上がると、Y は非常に小さくなりますが、同じ幅の座標はより高くなります。また、赤い内側の長方形を適切に正当化することはできません。一部の画面ではうまく機能し、他の画面では失敗します。赤い四角形は、親の四角形から出てくることがあります。

議題は、座標がどのように機能するかを理解し、内側の赤い長方形の完全性を確保することです

例に基づいた説明を得ることができれば素晴らしいでしょう。私は使っている-

void drawRect(float left, float top, float right, float bottom, Paint paint)

長方形を描く

4

5 に答える 5

42

canvas.drawRect(left,top,right,bottom,paint);

この中で

  1. left: キャンバスの左側から長方形の左側までの距離。

  2. top: キャンバスの上辺から長方形の上辺までの距離

  3. right: キャンバスの左側から長方形の右側までの距離。
  4. bottom: キャンバスの上辺から長方形の下辺までの距離。
于 2014-01-04T09:19:57.280 に答える
30

これは理にかなっています。

float left = 100, top = 100; // basically (X1, Y1)

float right = left + 100; // width (distance from X1 to X2)
float bottom = top + 100; // height (distance from Y1 to Y2)

したがって

RectF myRectum = new RectF(left, top, right, bottom);
canvas.drawRect(myRectum, myPaint);
于 2015-10-20T19:41:31.247 に答える
16

X は、左から右に水平に実行されます。Y は上から下に垂直に伸びます。グラフィックとまったく同じです。したがって、(0/0) は左上にあります。

「上」に行くと、上から下に成長するにつれて、Y はもちろん小さくなります。

ListViews のような要素のレイアウトに注意を払う必要があります。これらは、描画されるビューに部分的な (または新しい、わかりません) キャンバスを提供します。これらのビューは、独自の左上の位置に 0x0 を持ちます。絶対値が必要な場合は、後でView.getLocationOnScreen()自分でオフセットを呼び出して計算する必要があります。

于 2013-10-19T11:32:58.137 に答える