2012-09-28 14 views
7

Mam obiekt Canvas na początku. Muszę zmienić kolor niektórych pikseli w zależności od ich aktualnego koloru. Jak mogę to zrobić we właściwy sposób?Zmiana kanwy na Androida niektóre kolory pikseli

Szczegóły:

mam własną klasę przedłużony z ImageView. W metodzie onDraw(Canvas canvas) narysuję coś z klasą strony trzeciej i mam tylko obiekt Canvas z wynikiem. Potrzebuję po zmianie koloru niektórych pikseli w zależności od ich aktualnego koloru.

+0

Musisz przejrzeć kolejne piksele, pobrać aktualny kolor i ustawić nowy kolor. – user1706950

+0

Wiem i jak? :) Do rysowania mogę użyć 'canvas.drawPoint (x, y, paint)', ale jak uzyskać kolor piksela? –

+0

I BTW, potrzebuję odpowiedniego rozwiązania, mam na myśli sprawność i szybkość. –

Odpowiedz

3

Zakładając, że masz android.graphics.Canvas przedmiot zwany canvas i X & Y są punkty, w których chcesz zmienić piksel, więc tu przejść

Call:

canvas.drawPoint(X, Y, paint); 

Oto jak initalize obiekt klasy android.graphics.Paint czyli farba

Paint paint = new Paint(); 
paint.setStyle(Paint.Style.FILL); 
paint.setColor(Color.WHITE); 

Wyszukaj więcej o tym Link, aby zmienić wiele pikseli w różnych pozycjach, istnieje wiele funkcji, które pomogą Ci osiągnąć to, czego chcesz. Powodzenia :-)

+0

Nie, sytuacja jest inna. Nie znam X, Y. Mogę wykryć współrzędne tylko przez bieżący kolor piksela. Na przykład jeśli jakiś piksel jest zielony, pomaluj go na niebiesko. –

1

Istnieje prawdopodobnie kilkanaście sposobów na zrobienie tego. Jeśli chcesz zastosować podejście Canvas, istnieje sposób na narysowanie obiektu Bitmap. Następnie możesz narysować obiekt na innym płótnie. Obiekt Bitmap może również posiadać funkcje do modyfikowania pikseli.

Bitmap umożliwia również pobranie kopii do bufora, a jeśli wiesz, jak przechowywane są piksele, byłby to bardzo szybki sposób manipulowania obrazem. Nie jestem pewien, czy samo płótno ma to samo, co