Обратите внимание, что XOR - это битовая операция (и на самом деле двоичная, поэтому она определена только для ч / б), поэтому она определяется только при рисовании одной битовой карты над другой.Кварц предоставляет широкий спектр режимов наложения растровых изображений, в том числе «Разница» (kCGBlendModeDifference
) и «Исключение» (kCGBlendModeExclusion
), которые точно соответствуют XOR для черно-белых значений - так что да, Quartz поддерживает XOR.
Вы можете сделать это на практике, чтобы получить изображение вашей каретки (белая каретка на черном фоне) и нарисовать ее, используя любой из указанных выше режимов наложения (см. CGContextSetBlendMode
).Если вы также хотели нарисовать текст, используя XOR, то вы рисуете его в контексте изображения (опять же, белый на черном), а затем применяете к изображению контекст изображения с режимом наложения.