在iOS中使用Quartz画图时,第一步就是要获取画布(图形上下文),而后再画布上作各类操做。先看下CoreGraphics.h这个头文件,就能够知道可以建立多少种上下文类型。ide
#include <CoreGraphics/CGBase.h> #include <CoreGraphics/CGAffineTransform.h> #include <CoreGraphics/CGBitmapContext.h> #include <CoreGraphics/CGColor.h> #include <CoreGraphics/CGColorSpace.h> #include <CoreGraphics/CGContext.h> #include <CoreGraphics/CGDataConsumer.h> #include <CoreGraphics/CGDataProvider.h> #include <CoreGraphics/CGError.h> #include <CoreGraphics/CGFont.h> #include <CoreGraphics/CGFunction.h> #include <CoreGraphics/CGGeometry.h> #include <CoreGraphics/CGGradient.h> #include <CoreGraphics/CGImage.h> #include <CoreGraphics/CGLayer.h> #include <CoreGraphics/CGPDFArray.h> #include <CoreGraphics/CGPDFContentStream.h> #include <CoreGraphics/CGPDFContext.h> #include <CoreGraphics/CGPDFDictionary.h> #include <CoreGraphics/CGPDFDocument.h> #include <CoreGraphics/CGPDFObject.h> #include <CoreGraphics/CGPDFOperatorTable.h> #include <CoreGraphics/CGPDFPage.h> #include <CoreGraphics/CGPDFScanner.h> #include <CoreGraphics/CGPDFStream.h> #include <CoreGraphics/CGPDFString.h> #include <CoreGraphics/CGPath.h> #include <CoreGraphics/CGPattern.h> #include <CoreGraphics/CGShading.h>
能够看到,能够建立的上下文包括: spa
//图片 CGContextRef CGBitmapContextCreate //layer(UIView) CGContextRef CGLayerGetContext //pdf类型 CGContextRef CGPDFContextCreate
咱们再看下UIGraphics.h这个头文件,里面已经提供这3种上下文建立的封装给UIKit使用的方法,在普通的状况下,使用UIGraphics中的方法便可,并且画布已经作了坐标的翻转。code
UIKIT_EXTERN CGContextRef UIGraphicsGetCurrentContext(void) CF_RETURNS_NOT_RETAINED;orm
表示是个弱引用类型,直接使用,不用释放。blog
UIGraphicsBeginImageContext(self.bounds.size); CGContextRef context=UIGraphicsGetCurrentContext(); CGContextSetRGBFillColor(context, 1, 0, 0, 1); CGContextSetRGBStrokeColor(context, 0, 1, 0, 1); CGContextFillRect(context, CGRectMake(0, 100, 100, 100)); NSString *text=@"文字"; UIFont *font=[UIFont systemFontOfSize:14]; [text drawAtPoint:CGPointMake(0, 200) withAttributes:font.fontDescriptor.fontAttributes]; UIImage *img=[UIImage imageNamed:@"gg.jpg"]; [img drawInRect:CGRectMake(0, 300, 100, 100)]; CGImageRef cgimg = CGBitmapContextCreateImage(context); UIImage *resultImg = [UIImage imageWithCGImage:cgimg]; CGImageRelease(cgimg);