Android Paint PorterDuff.Mode.CLEAR

8

Ich arbeite an einer Anwendung, die auf Canvas ähnlich wie Finger Paint Demo von Android SDK gezeichnet wird. Mein Problem ist, wenn ich PorterDuff.Mode.CLEAR verwende. Wenn ich zeichne und Leinwand und wenn ich versuche, etwas zu löschen, funktioniert es gut. Aber wenn ich versuche, mein Bild als PNG -Datei zu speichern, sind die Pinselstriche schwarz gefärbt, und ich bin nicht sicher, warum das passiert. Hier ist ein Beispiel, was ich mache:

%Vor%

Radiergummi:

%Vor%

Und wie speichere ich das Bild:

%Vor%

Und hier ist ein Beispiel für Bilder:

Hier ist, wie meine Leinwand vor dem Speichern aussieht:

und hier ist das Bild nach dem Speichern auf SD-Karte:

    
Android-Droid 08.05.2012, 07:29
quelle

1 Antwort

12

Das Problem mit dem fingerpaint-Code ist, dass das, was Sie sehen, nicht dasselbe ist, das in das PNG komprimiert wird. Schau dir onDraw () an. Zuerst zeichnen Sie den Bildschirm weiß. Dann fügen Sie die Bitmap hinzu. Da Sie Porter Duff Clear verwendet haben, enthält der gelöschte Teil der Bitmap tatsächlich transparente schwarze Pixel (Wert 0x00000000). Aber weil Sie den weißen Hintergrund haben, werden diese schwarzen Pixel als weiß angezeigt.

Um dies zu beheben, ändern Sie entweder Ihren Speichercode, um das gleiche wie den Zeichencode zu tun

%Vor%

oder verwenden Sie nicht PortDuff.Clear:

%Vor%     
Renard 08.05.2012, 08:25
quelle

Tags und Links