在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);