@terminator-light

Как определить тап по линии, нарисованному в Canvas Android?

Рисую линию таким способом:
ePaint = new Paint();
ePaint.setTextSize(50);
canvas.drawLine(edge.v1.x, edge.v1.y, edge.v2.x, edge.v2.y, ePaint);

Edge
public class Edge {
    Vertex v1;
    Vertex v2;
}

Vertex
public class Vertex {
    float x;
    float y;
}


Так пытаюсь определить:
public static final int E = 20;

public boolean isPointOnLine(Edge edge, float px, float py) {
       if(px > edge.v1.x-E && px < edge.v2.x+E && py > edge.v1.y-E && py < edge.v2.y+E){
           return true;
       }else{
           Vertex v;
           v = edge.v1;
           edge.v1 = edge.v2;
           edge.v2 = v;
           return (px > edge.v1.x-E && px < edge.v2.x+E && py > edge.v1.y-E && py < edge.v2.y+E);
       }
    }

public void addWeight(float px, float py) {
        Log.d(TAG, "Point("+(int)px+","+(int)py+")");
        for(Edge edge: edges){
            if(isPointOnLine(edge, px, py) || isPointOnLine(edge, py, px)){
                Log.d(TAG, "found point: "+edge.toString());
                callback.onWeightChange(edge.weight);
                currentEditingEdge = edge;
                break;
            }else{
                Log.d(TAG, "not found");
            }
        }
    }


Пытался определить, построив прямоугольник, т.к. линия имеет толщину 50.
Уравнение прямой по 2 точкам не подошло
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы