2010-06-15 6 views
0

J'essaie de dessiner des cercles de coupoles à des positions aléatoires dans une application Android. Je les dessine sur une image bitmap puis dessine cette image bitmap sur la toile. C'est la fonction où dessiner les cercles:Dessin de cercles aléatoires

private void drawRandomCircles(int numOfCircles) { 
    Canvas c = new Canvas(b); 
    Paint cPaint = new Paint; 
    cPaitn.setColor(Color.RED); 
    for(int i = 0; i < numOfCircles; i++) { 
     int x = Math.Random % 100; 
     int y = Math.Random % 100; 
     c.drawCircle(x, y, 20, cPaint) 
    } 
} 

La bitmap b est globale. Et après avoir appelé cette fonction, je dessine simplement le bitmap dans la méthode onDraw. Maintenant, le problème est que je n'ai qu'un seul cercle dessiné à l'écran, peu importe la taille de numOfCircles.

Qu'est-ce qui se passe ici?

Répondre

1

Ce code n'est même pas compilé. Qu'est-ce que new Paint; par exemple?

Je vous suggère de consigner vos arguments à drawCircle pour vous assurer de les dessiner à des endroits différents. Si Math.Random par exemple est un champ, il changera entre les lectures, ce qui mettrait les cercles les uns sur les autres.

Si vous voulez écrire Math.random() l'erreur est que Math.random() retourne une valeur comprise entre 0 et 1. Vous pouvez utiliser

Random r = new Random(); 
// your loop 
    int x = r.nextInt(100); 
    int y = r.nextInt(100); 
+0

D'abord, je tiens à vous remercier pour votre réponse et pour les conseils. Le code ne compile pas parce que je l'ai écrit à la main au lieu de le copier à la source (je sais que c'est stupide). J'ai changé les appels Math.random() avec les appels de classe aléatoire et cela a fait l'affaire. Une fois de plus, merci beaucoup! – ViktorC

Questions connexes