Disegnare Da vecchia tela - Android
-
27-09-2019 - |
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);
}
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);
}