混合模式指定了Quartz如何将绘图绘制到背景上。Quartz默认使用普通混合模式(normal blend mode),该模式使用如下公式来计算前景绘图与背景绘图如何混合:
result = (alpha * foreground) + (1 - alpha) *background
“颜色与颜色空间”章节里面详细讨论了颜色值的alpha组件,该组件用于指定颜色的透明度。在本章的例子中,我们可以假设颜色值是完全不透明的(alpha = 0)。对于不透明的颜色值,当我们用普通混合模式时,所有绘制于背景之上的绘图都会遮掩住背景。
我们可以调用函数CGContextSetBlendMode并传递适当的混合模式常量值来设置混合模式来达到我们想到的效果。记住混合模式是图形状态的一部分。如果调用了函数CGContextSaveGState来改变混合模式,则调用函数CGContextRestoreGState来重新设置混合模式为普通混合模式。
接下来的内容例举了不同混合模式上将图3-13的矩形绘制到图3-14的矩形之上的效果。背景图使用普通混合模式来绘制。然后调用CGContextSetBlendMode函数来改变混合模式。最后绘制前景矩形。
- Listing 3-1 Setting up a circular clip area
- CGContextBeginPath(context);
- CGContextAddArc(context, w/2, h/2, ((w>h) ? h : w)/2, 0, 2*PI, 0);
- CGContextClosePath(context);
- CGContextClip(context);
表3-6 裁减图形上下文的函数
2. 欢迎大家分享。分享时请注明出处,谢谢!
[ 此帖被德鲁伊在2011-11-14 18:35重新编辑 ]