Как нарисовать «перевернутой» краской в ​​Android Canvas? - PullRequest
7 голосов
/ 10 мая 2011

Я рисую некоторые вещи на холсте, над ними я хочу нарисовать кружок перевернутым цветом:

canvas.drawCircle(zx, zy, 8f, myPaint);

Как настроить myPaint, чтобы круговой пиксель был в инвертированном цвете нижележащих пикселей?

Спасибо

Ответы [ 3 ]

4 голосов
/ 10 мая 2011

попробуйте

float mx [] = {
             -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 
    };
ColorMatrix cm = new ColorMatrix(mx);

p.setColorFilter(new ColorMatrixColorFilter(cm));

canvas.drawCircle(zx, zy, 8f, p);
3 голосов
/ 20 июня 2011

Я бы сказал, что цветовая матрица для инвертирования должна выглядеть так:

float mx [] = {
         -1.0f,  0.0f,  0.0f,  0.0f,  255.0f,
         0.0f,  -1.0f,  0.0f,  0.0f,  255.0f,
         0.0f,  0.0f,  -1.0f,  0.0f,  255.0f,
         0.0f,  0.0f,  0.0f,  1.0f,  0.0f 
};

Здесь - дополнительная информация для матрицы:

0 голосов
/ 04 января 2016
myPaint.setColor(Integer.MAX_VALUE - color);
...