2010-07-05 11 views

Odpowiedz

32

Możesz odczytać dowolną liczbę punktów z dowolnej ścieżki. Przykład jak odczytywać współrzędne od środka ścieżki:

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); 

można przekazać dowolnej odległości od ścieżki zaczynają się współrzędne punktu.

+0

pm.getPosTan (pm.getLength() * 0.5f, aCoordinates, null); zwraca wartość boolean, a następnie mamy punkt ??? –

+4

@JhansiKiRani, on jest tutaj: // współrzędne będą tutaj. Tak więc w Współrzędnych. –

2

O ile wiem, myślę, że nie można dostać wcześniej dodane punkty, ale można rozszerzyć klasę ścieżka i tworzyć własne, przesłanianie dodać metody, a następnie sklep, który wskazuje w tablicy lub listę lub cokolwiek wolisz.

+0

Dzięki, tak właśnie myślałem. Nie sądzę, aby rozszerzenie klasy dodało coś więcej niż tylko dodanie punktów (x, y) z onMyTouchEvent do ArrayList. – Matt

-1

Wspomniałeś pozycję palca w swoim pytaniu. Jeśli rysujesz i używasz zdarzeń ruchu, możesz dodać pozycje X i Y do tablicy ArrayList podczas wydarzenia, w którym wszystkie równomierne indeksy to X, a kursy to Y. Użyłem tego w kilku aplikacjach do rysowania, które stworzyłem. Aby odtworzyć ścieżkę, potrzebujesz tylko pętli for i Path.lineTo().

Również jeśli narysowałeś ścieżkę do widoku o określonym kolorze, powiedz Colour.Black, możesz użyć Bitmap.getPixels (...) i utworzyć tablicę {x0, y0, x1, y1, .. ..xn, yn} bazuje na pętli for:

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++; 
     } 
    } 
} 

Tablica xy ma wszystkie twoje współrzędne.

Powiązane problemy