Quartz 2D在ios中的使用简述二:创建画布
在iOS中使用Quartz画图时,第一步就是要获取画布(图形上下文),然后再画布上做各种操作。先看下CoreGraphics.h这个头文件,就可以知道能够创建多少种上下文类型。
#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>
可以看到,可以创建的上下文包括:
//图片 CGContextRef CGBitmapContextCreate //layer(UIView) CGContextRef CGLayerGetContext //pdf类型 CGContextRef CGPDFContextCreate
我们再看下UIGraphics.h这个头文件,里面已经提供这3种上下文创建的封装给UIKit使用的方法,在普通的情况下,使用UIGraphics中的方法即可,而且画布已经做了坐标的翻转。
UIKIT_EXTERN CGContextRef UIGraphicsGetCurrentContext(void) CF_RETURNS_NOT_RETAINED;
表示是个弱引用类型,直接使用,不用释放。
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);
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。