Bonjour,

Je voudrais scaler un bitmap (qui représente une flèche) en fonction du sinus d'un angle variable car compris dans une boucle. J'utilise la méthode Bitmap.createScaledBitmap, qui marche si je rentre des valeurs fixes, mais dès que j'introduis la notion de l'angle, j'ai l'erreur
08-29 22:10:29.993: E/AndroidRuntime(1053): java.lang.IllegalArgumentException: width and height must be > 0
08-29 22:10:29.993: E/AndroidRuntime(1053): at android.graphics.Bitmap.createBitmap(Bitmap.java:638)
08-29 22:10:29.993: E/AndroidRuntime(1053): at android.graphics.Bitmap.createBitmap(Bitmap.java:586)
08-29 22:10:29.993: E/AndroidRuntime(1053): at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:466)
08-29 22:10:29.993: E/AndroidRuntime(1053): at com.turvy.organicreaction.views.CircleView.onDraw(CircleView.java:156)
08-29 22:10:29.993: E/AndroidRuntime(1053): at android.view.View.draw(View.java:13458)ivityThread.java:4745)
...
Voici une partie du code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
for (int i = 0; i < elements.length; i++) {
 
	    int centerX = (viewBitmapWidth / 2) - (bitmap.getWidth() / 2);
	    int centerY = (viewBitmapHeight / 2) - (bitmap.getHeight());
 
	    matrix.reset();
 
	    double angle = Math.atan2(
		    radiusx * Math.sin(2 * Math.PI * i / elements.length),
		    radiusy * Math.cos(2 * Math.PI * i / elements.length));
 
	    matrix.postRotate((float) (angle * 180 / Math.PI),
		    (float) (bitmap.getWidth() / 2 + 5 * Math.sin(angle)),
		    (float) (bitmap.getHeight() + 5 * Math.cos(angle)));
 
	    matrix.postTranslate(centerX, centerY);
 
	    Bitmap tempBitmap = Bitmap.createScaledBitmap(bitmap,
		    bitmap.getWidth(), (int) (bitmap.getHeight() * Math.sin(angle)), false);
 
	    canvas.drawBitmap(tempBitmap, matrix, null);

Travaillant avec une matrice, j'ai essayé les méthodes postScale et preScale, mais ca me change trop la forme alors que je veux simplement allonger ou raccourcir les flèches, et ca me change aussi l'emplacement.

Auriez vous des suggestions pour mon problème ?

Merci