在Quartz中使用XOR绘图

Vol*_*dyi 0 macos cocoa core-graphics quartz-graphics

假设我正在将一些应用程序移植到Mac OS X,在某些情况下,它会在其他平台下使用Xor操作呈现文本和插入符号.研究表明,Quartz绘图函数不支持XOR运算.我对么?还有什么替代方法可以将这些代码移植到Mac OS X?

Sim*_*nek 5

请注意,XOR是位图操作(并且实际上是二进制的,因此仅针对b/w定义),因此仅在将一个位图绘制到另一个位图时定义.Quartz提供了各种各样的位图混合模式,包括Difference(kCGBlendModeDifference)和Exclusion(kCGBlendModeExclusion),它们都是b/w值的XOR - 所以,是的,Quartz确实支持XOR.

在实践中你可以这样做的方法是获得你的插入符号(黑色背景上的白色插入符号)并使用上述任一混合模式绘制它(请参阅参考资料CGContextSetBlendMode).如果您打算使用XOR绘制文本,则将其绘制到图像上下文中(再次,黑色为白色),然后将具有混合模式的图像上下文应用于目标.