假设我正在将一些应用程序移植到Mac OS X,在某些情况下,它会在其他平台下使用Xor操作呈现文本和插入符号。研究表明,Quartz绘图函数不支持XOR运算。我对么?还有什么替代方法可以将这些代码移植到Mac OS X?
答案 0 :(得分:5)
请注意,XOR是位图操作(实际上是二进制的,因此仅针对b / w定义),因此仅在将一个位图绘制到另一个位图时定义。 Quartz提供了各种各样的位图混合模式,包括差异(kCGBlendModeDifference
)和排除(kCGBlendModeExclusion
),这两种模式对于b / w值都是正好的XOR - 所以,是的,Quartz确实支持XOR。
在实践中你可以这样做的方法是获得你的插入符号(黑色背景上的白色插入符号)的图像,并使用上述任一混合模式绘制它(参见CGContextSetBlendMode
)。如果您打算使用XOR绘制文本,则将其绘制到图像上下文中(再次,黑色为白色),然后将具有混合模式的图像上下文应用于目标。
答案 1 :(得分:1)
QuickDraw XOR模式绝对不是真的,只为b / w"定义。例如,Inside Macintosh中的原始描述,Color Quickdraw,用于" srcXor"模式是:
其中源像素为黑色,反转目标像素 - 对于彩色目标像素,如果像素是直接像素,则使用其颜色的补码,如果像素被索引,则反转其索引。