Domanda

Sto facendo un App che deve essere in grado di disegnare una nuova grafica in cima l'ultimo set.

Questo è il mio metodo corrente OnDraw () -

protected void onDraw(Canvas canvas) {

    canvas.drawColor(Color.WHITE);

    if(points.size() > 0) {
        //do some stuff here - this is all working ok
        canvas.drawLine(p1.x, p1.y, p2.x, p2.y, linePaint);
    }   
}

In sostanza, ho bisogno di disegnare la nuova grafica come strato sopra l'ultima, quindi quello che sto cercando è un modo per portare l'immagine dell'ultima tela per la corrente.

ho cercato di capirlo io stesso con il metodo canvas.setBitmap (), ma agisce molto divertente.

Qualsiasi aiuto apprezzato:)

P.S se ce n'è bisogno, la classe estende SurfaceView e implementa SurfaceHolder.Callback

Edit: Questo è quello che ho provato nel metodo OnDraw (), ma solo forza chiude

if(bitmap != null) {
        canvas.drawBitmap(bitmap, 0, 0, paint);
        canvas.setBitmap(bitmap);  
    }
È stato utile?

Soluzione

Trovato la risposta me:)

@Override
protected void onDraw(Canvas c) {

if(bitmap != null && canvas != null) { 
    canvas.drawLine(p1.x, p1.y, p2.x, p2.y, linePaint);
    c.drawBitmap(bitmap, 0, 0, linePaint);  
}
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

bitmap = Bitmap.createBitmap(width, height, Config.RGB_565);
canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE);
}

funziona esattamente come previsto, si crea l'effetto di disegno sulla parte superiore della vecchia tela continuamente

Altri suggerimenti

Si dovrà memorizzare l'immagine precedente con insistenza su un ArrayList, e durante OnDraw, scorrere l'ArrayList per ridisegnare tutti gli elementi.

qualcosa di simile:

for (Graphic graphic : _graphics) {
    bitmap = graphic.getBitmap();
    coords = graphic.getCoordinates();
    canvas.drawBitmap(bitmap, coords.getX(), coords.getY(), null);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top