Ich versuche, ein Bitmap umzukehren, indem ich einen Paint ColorFilter verwende Ich habe diesen Link als Referenz verwendet: http://www.mail-archive.com/android-developers@googlegroups.com/msg47520.html
aber es hat überhaupt keine Wirkung - das Bitmap wird normal gezeichnet, kannst du mir sagen, was ich falsch mache?
Definiere float array:
float invert [] = {
-1.0f, 0.0f, 0.0f, 1.0f, 0.0f,
0.0f, -1.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.0f, -1.0f, 1.0f, 0.0f,
1.0f, 1.0f, 1.0f, 1.0f, 0.0f
};
Paint im Konstruktor einrichten
ColorMatrix cm = new ColorMatrix(invert);
invertPaint.setColorFilter(new ColorMatrixColorFilter(cm));
Referenz im Draw() Methode
c.drawBitmap(Bitmap, null, Screen, invertPaint);
BEARBEITEN: Es ist mir gelungen, es zum Laufen zu bringen, indem ich die Zuweisung von Paint in der Draw-Anweisung hatte:
ColorMatrix cm = new ColorMatrix(invert);
invertPaint.setColorFilter(new ColorMatrixColorFilter(cm));
c.drawBitmap(rm.getBitmap(DefaultKey), null, Screen, invertPaint);
aber jetzt rendert es sehr langsam (wahrscheinlich, weil es für jeden einzelnen Frame eine komplizierte Matrix einrichtet) ... gibt es einen Grund, warum es funktioniert, wenn es in derselben Methode ist?
BEARBEITEN2: KÜMMER DICH NICHT DARUM!!! Lol, das Problem war, dass ich zwei Konstruktoren hatte und ich den Colorfilter nur in einem davon konfiguriert habe... der Prozess ist immer noch sehr CPU-intensiv und verursacht Framerate-Probleme
0 Stimmen
Das ist eine ziemlich merkwürdige Matrix für eine Farbinversion. Sollte sie 5x4 sein?
1 Stimmen
Nicht sicher, was es bedeutet, aber es funktioniert... aber es ist langsam, wahrscheinlich lohnt es sich, einfach ein invertiertes Bitmap zu speichern und sie auszutauschen :/