2010-07-05 11 views

Respuesta

32

Puede leer tantos puntos como desee desde cualquier ruta. Ejemplo cómo leer las coordenadas de la mitad del camino:

PathMeasure pm = new PathMeasure(myPath, false); 
    //coordinates will be here 
    float aCoordinates[] = {0f, 0f}; 

    //get coordinates of the middle point 
    pm.getPosTan(pm.getLength() * 0.5f, aCoordinates, null); 

Puede pasar cualquier distancia de la ruta Inicio para obtener las coordenadas del punto.

+0

pm.getPosTan (pm.getLength() * 0.5f, aCoordinates, null); devuelve un valor booleano, entonces ¿cuál es el punto? –

+4

@JhansiKiRani, él dice: // las coordenadas estarán aquí. Entonces en aCoordinates. –

2

Por lo que yo sé, creo que no se puede obtener con anterioridad puntos añadido, pero se puede extender la clase Path y cree su propia, anulación añadir métodos, y luego tienda que señala en una matriz o una lista o lo que prefieras.

+0

Gracias, eso es lo que pensé. No creo que la extensión de la clase agregue nada más que solo agregar los puntos (x, y) de onMyTouchEvent a una ArrayList en su lugar. – Matt

-1

Ha mencionado la posición de los dedos en su pregunta. Si dibuja y usa eventos de movimiento, puede agregar las posiciones X e Y a una ArrayList durante el evento donde todos los índices pares son X y las probabilidades son Y. Usé esto en un par de aplicaciones de dibujo que creé. Para volver a crear la ruta, todo lo que necesita es un ciclo for y Path.lineTo().

Además, si ha dibujado la ruta a una vista con un color específico, digamos Color.Black, puede usar Bitmap.getPixels (...) y crear una matriz {x0, y0, x1, y1, .. ..xn, yn} basa fuera de un bucle for como

int i = 0; 
for(int y = 0; y < bitmap.getHeight(); y++){ 
    for(int x = 0; x < bitmap.getWidth(); x++){ 
     if(pixels[y*bitmap.getWidth()+x] == Color.BLACK){ 
      xy[i] = x; 
      i++; 
      xy[i] = y; 
      i++; 
     } 
    } 
} 

El xy matriz tiene todas sus coordenadas.

Cuestiones relacionadas