Présentation
Dans le dossier "drawable-mdpi": une image de 556px par 556px nommée "b5"
Sur le main layout un ImageView dont la source est "b5"

But visé
Dessiner sur une image bitmap puis affecter celle-ci à l'imageview.

Problème
1.Code légèrement simplifié pour illustrer le probleme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
//creation d'un bitmap qui sera dessiné sur b5
Bitmap icone= BitmapFactory.decodeResource(getResources(), R.drawable.icon);
//creation d'un bitmap temporaire avec b5 non modifié
Bitmap b= BitmapFactory.decodeResource(getResources(), R.drawable.b5);
Canvas c = new Canvas(b);
//on dessine sur le canvas mTextpaint est créé..j'ai juste omis de copier le bout de code
c.drawBitmap(icone,0,0,mTextPaint);
//on affecte l'image a l'imageview
   BoardImage.setImageBitmap(b);
Ça plante à la ligne "Canvas c = new Canvas(b);"

2.Si je déplace l'image b5 dans "drawable-hdpi" alors ça ne plante pas mais l'image est légèrement déformée (c'est normal)

3.Si je remplace la ligne de creation du bitmap par

Code : Sélectionner tout - Visualiser dans une fenêtre à part
b=BoardImage.getDrawingCache();

Alors ça fonctionne...pourtant le BoardImage a bien "b5" dans mdpi comme source.

4.Finalement voici ma méthode temporaire peu élégante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Bitmap e = BitmapFactory.decodeResource(getResources(),R.drawable.b5);  
 
        Bitmap b= Bitmap.createBitmap(556, 556, Bitmap.Config.ARGB_8888);
    	Canvas c = new Canvas(b);  	
    	c.drawBitmap(e, 0, 0, mTextPaint);
    	c.drawBitmap(icone,0,0,mTextPaint);
    	BoardImage.setImageBitmap(b);
Je crée un bitmap contenant "b5" (appelé "e")
Je crée un bitmap vide (appelé "b")
Je crée un canvas pour "b"
Je dessine "e" sur le canvas
Je dessine "icone" sur le canvas.
J'affecte le tout a l'imageview


Bon ça marche mais je ne comprend pas pourquoi je ne peux pas affecter un canvas à un bitmap qui charge une image ressource qui se trouve dans"drawable-mdpi".