Fondamentalement, j'ai le bitmap suivant: Nuage de bitmap; cloud = BitmapFactory.decodeResource (getResources(), R.drawable.cloud); Ce que je veux faire est dessiner le même bitmap (dans ce cas le nuage) plusieurs fois dans différents endroits (aléatoires) sur le canevas. Je veux faire cela dans la méthode OnDraw de mon point de vue.Dessiner plusieurs fois à partir d'un seul bitmap sur un canevas
Ainsi, le produit final devrait ressembler à ceci:
Cependant
Voici le code pour dessiner le bitmap à plusieurs reprises sur la même toile:
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
// canvas.drawColor(Color.BLUE);
//drawBackground(canvas);
//objectMovement(canvas);
for (int i = 0; i < 500; i += 50) {
canvas.drawBitmap(cloud, 50 + rand.nextInt(350),
10 + rand.nextInt(350), null);
}
invalidate();
}
Comme vous pouvez le voir , j'utilise aléatoire pour générer la position du bitmap, et chaque fois que le bitmap est dessiné dans un endroit différent sur le canevas.
Le seul problème est, à chaque fois que invalidate() est appelé, le dessin dans la boucle for se produit à nouveau. Pour cette raison, il semble que les dessins (nuage) se déplacent très rapidement partout.
Après avoir cherché pendant un certain temps, je l'ai trouvé à cette question: Draw multiple times from a single bitmap
Il est à peu près la même question que ma question, mais onfortunately il n'y a pas là bonne réponse.
Alors, comment puis-je archiver cela?
Merci!
Nous vous remercions de votre réponse, votre droit de lire le bitmap une fois. Mon erreur. Cependant, j'ai posé ma question dans le mauvais sens. Vous pouvez voir la question mise à jour dans le post d'ouverture. – MeesterPatat
Tout d'abord, n'appelez pas invalider. Si vous cherchez quelque chose qui continue de dessiner aussi vite que possible, vous devriez utiliser 'SurfaceView'. Deuxièmement, la raison pour laquelle ils semblent se déplacer très rapidement partout est parce que vous obtenez un nouvel emplacement aléatoire à chaque image. Cela signifie qu'ils se déplacent très rapidement partout. Si vous voulez qu'ils restent immobiles, vous devez stocker l'emplacement de chaque cercle et utiliser cet emplacement pour les dessiner à chaque fois. – CaseyB