2016-05-10 10 views
-3

Canvas erstellen mit mehreren Werkzeugen wie Bleistift, Radiergummi, Linie, oval, Dreieck, Quadrat, Rückgängig, Wiederherstellen usw.Android Bitmap Undo Redo-Effekt

Undo, Redo funktioniert nicht.

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

      mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); 
      mCanvas = new Canvas(mBitmap); 

} 

Antwort

1

Ich stimme nicht mit der ersten Antwort, speichern eine Bitmap ist sehr teuer.

was Sie speichern sollten, ist die Aktion selbst. Sie können eine neue Klassenaufrufaktion erstellen und den Zeichenpfad, den Malstil usw. speichern. Wenn der Benutzer auf die Schaltfläche Wiederholen klickt, führen Sie die Aktion für die Bitmap aus.

Ich schrieb eine Demo über Paintboard, es unterstützt derzeit nur Aktion rückgängig machen, aber mit den Aktionen speichern in einer Liste, können Sie problemlos Redo-Funktion zu ihm hinzufügen.Die Adresse ist PaintView.

+0

Ja, speichern Bitmap ist teuer, aber manchmal ist einfacher, wenn Aktionen komplex ist – Konstantin

-1

Eine der Varianten der rückgängig machen mit - Redo ist Speicher-Bitmap nach jeder Aktion (zum Beispiel unter Verwendung von HashMap) und dann aktuelle Bitmap ersetzen Bitmap, um eine Vorschau (wenn Aktion rückgängig zu machen) oder nächsten Bitmap (falls diese Redo-Aktion). Wie ich weiß, Android SDK nicht Standard-API zu tun, was Sie wollen.

+0

Geben Sie mir Demo-Demo bitte. – Tech

+0

Halten Sie eine HashMap von Bitmaps für jede Operation wird Ihnen einen OutOfMemoryError sehr schnell geben. –

+0

Ja, alle wissen es. Aber wenn Sie diese Technologie in einem cleveren, zum Beispiel nicht mehrere Bitmaps speichern, und einige auf ssd speichern, wird es nicht passieren. – Konstantin