Android Mise À L'Échelle De La Toile Bitmap

J'ai une application de dessin qui permet à l'utilisateur de dessiner sur une toile vierge. Je suis tenter de dessiner une échelle de "vignettes" de l'actuel bitmap de sorte que lorsque l'utilisateur a l'échelle de la Vue, ils peuvent faire référence à la vignette pour avoir une idée de l'endroit où ils sont dans l'ensemble du tirage de la toile. J'ai la mise à l'échelle de travail, et je suis de l'affichage de la vignette dans l'emplacement correct, mais il semble que la vignette n'est pas mis à jour sur les onDraws lorsque de nouvelles lignes/formes sont ajoutés.

Alors que j'ai accès à la sous-jacentes bitmap de ce point de vue (pour afficher la vignette, être en mesure de facilement sauvegarder l'image dans un fichier, etc) je ne le suit dans onSizeChanged() pour l'Afficher:

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);

    //set the canvas height, panning, etc, based on the now inflated View
    mWidth      = getWidth();
    mHeight     = getHeight();
    mAspectRatio    = mWidth / mHeight;
    mPanX       = 0;
    mPanY       = 0;

    //create the Bitmap, set it to the canvas
mBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888);
mCanvas.setBitmap(mBitmap);
draw(mCanvas);
}

Ensuite, lorsque l'utilisateur dessine et invalidate() est appelée, je ne le suit dans onDraw() pour générer la miniature:

@Override
protected void onDraw(Canvas canvas) {
    <snipped code that draws paths, shapes to canvas>

    if (mScaled) {
        Bitmap out = Bitmap.createScaledBitmap(mBitmap, (int) thumbWidth, (int) thumbHeight, false);
        canvas.drawBitmap(out, null, thumbnailRectF, thumbCanvasPaint);
    }
}

La vignette s'affiche dans l'espace défini par thumbnailRectF à l'aide de la thumbCanvasPaint, mais dans les onDraw() appelle, à l'échelle bitmap n'a pas changé de son état d'origine, même si la pleine taille active de la toile montre tous les dessins, etc. Basé sur des tests, il me semble que je suis en train de l'image Bitmap à l'appel initial à dessiner(mCanvas);, à la suite onDraws sont écrit à la sous-jacentes Bitmap plutôt que celui spécifié dans onSizeChanged().

Donc, je suppose que je suis en train d'essayer de comprendre comment je la cravate de la onDraw toile à une image que je peux readliy d'accès pour effectuer des re-tailles, enregistrer, etc. En regardant cette question, j'ai pensé que le tirage au sort(mCanvas); appel lierait les onDraw à l'image spécifiée dans le mCanvas (dans mon cas, mBitmap), mais dans la pratique, il ne semble pas être un travail, dans la mesure où updats de la toile sont concernés.

Merci,

Paul

OriginalL'auteur Paul Mennega | 2011-02-07