J'appelle getDrawingCache dans la fonction onDraw. Le problème est qu'il ne contient les modifications de la toile que la première fois, et après cela, il n'est pas du tout mis à jour avec les nouveaux changements. Voici mon code:getDrawingCache n'est pas mis à jour
paintAction.draw(canvas);
if (paintAction.isPermanentChange())
{
Bitmap partialBitmap=getDrawingCache();
int numColored=0;
for (int index1=0;index1<partialBitmap.getWidth();index1++)
{
for (int index2=0;index2<partialBitmap.getHeight();index2++)
{
if (partialBitmap.getPixel(index1,index2)==0xFF000000)
numColored++;
}
}
Log.i("PaintDroid","Bitmap pixels: " + numColored);
int areaWidth=partialBitmap.getWidth()-SCROLLBAR_SIZE;
int areaHeight=partialBitmap.getHeight()-SCROLLBAR_SIZE;
int[] pixels=new int[areaWidth*areaHeight];
partialBitmap.getPixels(pixels,0,areaWidth,0,0,areaWidth,
areaHeight);
numColored=0;
for (int index=0;index<pixels.length;index++)
if (pixels[index]==0xFF000000) numColored++;
Log.i("PaintDroid","Pixels: " + numColored);
(setDrawingCache (true) est appelée lorsque la vue est créée, parce que si je l'appelle de onDraw, getDrawingCache renvoie null.)
Comme on peut le voir, je suis compter le nombre de pixels noirs, à la fois en parcourant le bitmap et en obtenant les valeurs dans un tableau, et comme je l'ai dit, je reçois le nombre que je m'attendais pour la première fois, mais après, il était censé augmenter, mais doesn ' t changer du tout!
Quelqu'un a-t-il une idée de ce qui ne va pas? Merci.
Cela ne fonctionnera pas, car il recycle votre bitmap. – janex