Это можно сделать, создав временное растровое изображение с 32 битами на пиксель, а затем очистив альфа-компонент с помощью цикла for и, наконец, снова превратив его в NSImage.
Я подозреваю, что это можно сделать более простым способом, используя умную комбинацию NSColor и NSCompositingOperation. Или, возможно, изображение нужно скомпоновать само с собой с помощью drawAtPoint.
Мой код выглядит так.
NSImage* img = some image with RGB and Alpha;
NSRect rect = some rect inside the image;
[img lockFocus];
[[NSColor clearColor] set];
NSRectFillUsingOperation(rect, NSCompositeXOR);
[img unlockFocus];
ПРИМЕЧАНИЕ. Установка альфа-канала на 1 может быть выполнена с помощью blackColor с NSCompositePlusLighter.
В чем секрет очистки альфа-канала?