可以通过分配一个每像素 32 位的临时位图,然后使用 for 循环清除 alpha 分量,最后再次将其转回 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];
注意:将 alpha 通道设置为 1 可以通过使用带有 NSCompositePlusLighter 的 blackColor 来完成。
清除 Alpha 通道的秘诀是什么?