2010-04-14 2 views
3

Comment obtenir des courbes lisses plutôt que des points ou des cercles, lorsque je dessine avec mon doigt sur l'écran tactile, sur Android? J'utilise le code-Problème de peinture/toile Android; dessiner des courbes lisses

public class DrawView extends View implements OnTouchListener { 
private static final String TAG = "DrawView"; 

List<Point> points = new ArrayList<Point>(); 
Paint paint = new Paint(); 

public DrawView(Context context) { 
    super(context); 
    setFocusable(true); 
    setFocusableInTouchMode(true); 

    this.setOnTouchListener(this); 

    paint.setColor(Color.WHITE); 
    paint.setAntiAlias(true); 
} 

    @Override 
    public void onDraw(Canvas canvas) { 
    for (Point point : points) { 
     canvas.drawCircle(point.x, point.y, 5, paint); 
     // Log.d(TAG, "Painting: "+point); 
    } 
} 

public boolean onTouch(View view, MotionEvent event) { 
    // if(event.getAction() != MotionEvent.ACTION_DOWN) 
    // return super.onTouchEvent(event); 
    Point point = new Point(); 
    point.x = event.getX(); 
    point.y = event.getY(); 
    points.add(point); 
    invalidate(); 
    Log.d(TAG, "point: " + point); 
    return true; 
} 
} 

class Point { 
float x, y; 

@Override 
public String toString() { 
    return x + ", " + y; 
} 
} 

Répondre

0

suivante j'imagine que vous auriez à utiliser une sorte d'interpolation et combler les lacunes vous. Cela tuerait complètement le système s'il devait envoyer des événements tactiles pour chaque pixel que votre doigt a traversé.

+0

Merci Steve. Mais au lieu d'utiliser canvas.drawCircle (point.x, point.y, 5, paint); Je veux juste dessiner une courbe continue parce que ce que je reçois est de petits cercles. Je ne sais pas comment faire l'interpolation donc s'il y a un moyen/une méthode pour dessiner/peindre des courbes simplement dans Android, alors je voudrais l'utiliser. – Wrapper

+0

dans Finger paint vous rejoignez les points adjacents détectés par l'interface tactile en utilisant une courbe de Bézier. – Samuh

5

Une application FingerPaint est fournie avec le module de démonstration API; vous pouvez jeter un coup d'oeil à ça. Voici le link

Questions connexes