You can use a ColorMatrix in your paint brush to translate the RGBA
values of your image.
Here is a way of changing the hue 180 degrees (inverting "color
only"), but preserving lightness and saturation:
Canvas c = new Canvas(destBitmap);
Paint p = new Paint();
float[] mx = {
0.0f, 0.5f, 0.5f, 0.0f, 0.0f,
0.5f, 0.0f, 0.5f, 0.0f, 0.0f,
0.5f, 0.5f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f, 0.0f
};
ColorMatrix cm = new ColorMatrix(mx);
p.setColorFilter(new ColorMatrixColorFilter(cm));
c.drawBitmap(srcBitmap, 0, 0, p);
If you literally want to "invert" the bits, and make each RGB value
equal to 255 minus its original value, then the matrix would look
something like this:
float[] mx = {
-1.0f, 0.0f, 0.0f, 0.0f, 1.0f,
0.0f, -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, 0.0f
};
I didn't test this. Check out the ColorMatrix class docs.
-broc
On Jul 17, 7:48 pm, efu <[email protected]> wrote:
> I have a Canvas backed by a bitmap that I want to invert the color for
> a rectangular region.
> The meaning of inversion is to flip the bits of all the colors pixels.
>
> I can't seem to find an easy way to do it using the Paint class.
> Any suggestions?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---