CodeV

7.1-使用Blocks绘制图像

第6章介绍了将Quartz绘图与Objective-C块组合在一起的自定义PushDraw()PushLayerDraw()函数,用于图形状态管理和透明层(管理)。 清单7-1解释了这个想法,引入了一个返回图像的新函数。 它使用相同的DrawingStateBlock类型来传递块内的一系列绘图操作,将它们刻录到新的图像绘制上下文中。

虽然我最初构建了这个功能来创建蒙版图像(如清单7-2所示),我发现自己在各种各样的情况下都可以使用它。 例如,它可以用于构建图像视图的内容,创建用于合成的子图像,构建颜色样本等等。 清单7-1在本章中用于各种支持角色,为您将阅读到的许多任务提供了一个很好的跳跃点(起点)。

清单7-1从绘图块创建图像

1
2
3
4
5
6
7
8
9
UIImage *DrawIntoImage(
CGSize size, DrawingStateBlock block)
{
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
if (block) block();
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}

本文翻译自《iOS Drawing Practical UIKit Solutions》作者:Erica Sadun,翻译:Cheng Dong。如果觉得本书不错请购买支持正版:亚马逊购买传送门,本书所有源代码可在GitHub上下载。译者虽然力求做到信,达,雅,但是由于时间仓促加之译者水平十分有限,文中难免会出现不正确,不准确,词不达意,难于理解的地方,还望各位批评指正,共同进步,谢谢。转载请注明出处。