关于macos:Quartz中用XOR绘图 | 珊瑚贝

Drawing with XOR in Quartz


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


请注意,XOR 是一种位图操作(实际上是二进制,因此仅针对黑白定义),因此仅在将一个位图绘制在另一个位图上时才定义它。 Quartz 提供了多种位图混合模式,包括差异 (kCGBlendModeDifference) 和排除 (kCGBlendModeExclusion),它们都是黑白值的 XOR – 所以,是的,Quartz 确实支持 XOR。

您可以在实践中执行此操作的方法是获取插入符号的图像(黑色背景上的白色插入符号)并使用上述任一混合模式(参见 CGContextSetBlendMode)绘制它。如果您还打算使用 XOR 绘制文本,则将其绘制到图像上下文中(同样,黑底白字),然后将具有混合模式的图像上下文应用于您的目标。

  • 还有 kCGBlendModeXOR,但它是基于 alpha 而不是基于颜色的。更重要的是,混合模式不限于绘制光栅——您可以为任何操作设置混合模式,包括填充和描边。您可以直接绘制插入符号(例如);您不需要先将其绘制成图像。


QuickDraw XOR 模式”只为黑白定义”绝对不是真的。例如,在 Inside Macintosh, Color Quickdraw 中对于”srcXor”模式的原始描述是:

如果源像素为黑色,则反转目标像素-对于彩色目标像素,如果像素是直接的,则使用其颜色的补色,如果像素被索引,则反转其索引。


来源:https://www.codenong.com/8951679/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9712.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?