Zeichnen Von Old Canvas - Android
-
27-09-2019 - |
Frage
Ich mache eine App, die Bedürfnisse der Lage sein, zeichnen neue Grafiken auf dem letzten Satz.
Dies ist meine aktuelle OnDraw () -Methode -
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);
}
}
Im Grunde genommen, ich brauche die neuen Grafiken als Schicht auf den letzten zu ziehen, also was ich suche ist eine Möglichkeit, das Bild der letzten Leinwand auf den Strom zu führen.
Ich habe Figur versuchte es mir mit dem canvas.setBitmap () Methode, aber es wirkt sehr lustig.
Jede Hilfe dankbar:)
P. S, wenn es gebraucht wird, erstreckt sich die die Klasse SurfaceView
und Geräte SurfaceHolder.Callback
Edit: Das ist, was ich in der OnDraw () -Methode versucht, aber es gerade schließt zwingen
if(bitmap != null) {
canvas.drawBitmap(bitmap, 0, 0, paint);
canvas.setBitmap(bitmap);
}
Lösung
Können Sie die Antwort selbst:)
@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);
}
Arbeiten genau wie beabsichtigt, schafft es die Wirkung der Zeichnung auf der Oberseite der alten Leinwand kontinuierlich
Andere Tipps
Sie werden das vorherige Bild speichern, müssen beharrlich auf eine Arraylist, und während OnDraw, Schleife durch die Arraylist alle Elemente neu zu zeichnen.
so etwas wie folgt aus:
for (Graphic graphic : _graphics) {
bitmap = graphic.getBitmap();
coords = graphic.getCoordinates();
canvas.drawBitmap(bitmap, coords.getX(), coords.getY(), null);
}