Трюк XOR тривиально отличается.Хотя визуально он не самый отчетливый, хотя бы потому, что он полностью игнорирует работу человеческого глаза.Например, на светло-серых тонах насыщенный красный цвет визуально довольно различим.
Возможно, вы захотите преобразовать цвет в HSV и проверить насыщенность S. Если низкий (оттенки серого), нарисуйте красный пиксель.Если насыщенность высока, оттенок вполне очевиден, и белый или черный пиксель будет выделяться.Используйте черный (V = 0), если исходный пиксель имел высокое V;используйте белый, если исходный пиксель имел низкий V (темный насыщенный цвет)
. Вы можете использовать метод LineIterator, как предлагалось ранее.
(Кстати, у трюка XOR тоже есть довольно плохие случаи.^ 0xFF = 0x80. Это чертовски трудно увидеть)