2 つ以上の長方形オブジェクト間に矢印を描画する際に問題が発生しています。複数の長方形を格納する配列リストがあります。
たとえば、ユーザーはキャンバス上に 2 つの長方形を持っています。矢印の描画ボタンをクリックすると、ユーザーは最初の四角形をクリックして 2 番目の四角形にドラッグでき、2 つの四角形の間に矢印が形成されます。
矢印を描画するためにタッチ座標を取得する方法がわかりません。現在の x と y の位置を取得できます。また、長方形がずれている場合、どうすれば矢印を再描画できますか。
矢印の頭だけを描くことができました。
これは私が達成したいことのイメージです:
私のコードは次のとおりです。
public static ArrayList<RectF> rects = new ArrayList<RectF>();
public void addRectangle() {
RectF rect = new RectF();
rect.set(x, y, x + 80, y + 50);
rects.add(rect);
}
public void addArrow() {
//arrow head
Point a = new Point(0, 0);
Point b = new Point(0, 25);
Point c = new Point(21, 12);
Path path = new Path();
path.lineTo(b.x, b.y);
path.lineTo(c.x, c.y);
path.lineTo(a.x, a.y);
path.close();
paths.add(path);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
for (RectF rec : rects) {
canvas.drawRect(rec, paintColor);
}
}
public boolean onTouchEvent(MotionEvent event) {
x = event.getX();
y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
for (int i = 0; i < rects.size(); i++) {
// Equation Editor
if (rects.get(i).contains(x, y)) {
}
}
}