1.绘图总结:
绘图前设置:CGContextSetRGBFillColor/CGContextSetFillColorWithColor //填充色CGContextSetRGBStrokeColor/CGContextSetStrokeColorWithColor //笔颜色CGContextSetLineWidth //线宽度绘图后设置:注: 画完图后,必须先用CGContextStrokePath来描线,即形状后用CGContextFillPath来填充形状内的颜色.2.常见图形绘制:CGContextFillRect/CGContextFillRectsCGContextFillEllipseInRectCGContextAddRect/CGContextAddRectsCGContextAddEllipseInRectCGContextAddLinesCGContextMoveToPointCGContextAddLineToPoint3.常见控制方法:CGContextSaveGStateCGContextRestoreGState4.创建内存图像context:CGBitmapContextCreate <-----CGContextRlease释放CGColorSpaceCreateWithName (KCGColorSpaceGenericRGB)CGColorSpaceRleaseCGBitmapContextCreateImage() <-----CGImageRlease 释放.eg:CGContextRefMyCreateBitmapContext(intpixelsWide,intpixelsHigh){ CGContextRef context=NULL;CGColorSpaceRefcolorSpace;void* bitmapData;int bitmapByteCount;int bitmapBytesPerRow;bitmapBytesPerRow =(pixelsWide*4);bitmapByteCount =(bitmapBytesPerRow*pixelsHigh);colorSpace=CGColorSpaceCreateDeviceRGB();bitmapData=malloc(bitmapByteCount);if(bitmapData==NULL){ fprintf(stderr,"Memorynotallocated!");returnNULL;}context=CGBitmapContextCreate(bitmapData, pixelsWide, pixelsHigh, 8, bitmapBytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast);if(context==NULL){ free(bitmapData);fprintf(stderr,"Contextnotcreated!");returnNULL;}CGColorSpaceRelease(colorSpace);returncontext;}5.图形的变换:CGContextTranslateCTMCGContextRotateCTMCGContextScaleCTM 6.常用函数: CGRectContainsPoint();CGRectContainsRect();CGRectIntersectsRect();CGRectIntersection();CGPointEqualToPoint();CGSizeEqualToSize(); 7.从原图片中取小图.CGImageCreateWithImageInRect8.屏幕快照:
#import "QuartzCore/QuartzCore.h"UIGraphicsBeginImageContext(yourView.frame.size); [[yourView layer] renderInContext:UIGraphicsGetCurrentContext()]; UIImage*screenshot =UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); from:http://www.cppblog.com/zhangyuntaoshe/articles/123066.html合并两张bit图到一张image的方法To graphically merge two images into a new image, you do something like this:UIImage *result = nil;unsignedchar *data = calloc(1,size.width*size.height*kBytesPerPixel);if (data != NULL) { // kCGImageAlphaPremultipliedLast 为预记录的#define value// 设置context上下文CGContextRef context = CGBitmapContextCreate(data, size.width, size.height, 8, size.width*kBytesPerPixel,CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast);if (context != NULL) { UIGraphicsPushContext(context);// Image 为下载的背景图片,用于比较contextCGContextTranslateCTM(context, 0, size.height);CGContextScaleCTM(context, 1, -1);[image drawInRect:imageRect];[image2 drawInRect:image2Rect];UIGraphicsPopContext();CGImageRef imageRef = CGBitmapContextCreateImage(context);if (imageRef != NULL) { result = [UIImageimageWithCGImage:imageRef];CGImageRelease(imageRef);}CGContextRelease(context);}free(data);}return result;关键方法: CGContextRef context = CGBitmapContextCreate();CGContextTranslateCTM();CGContextScaleCTM();CGImageRef imageRef = CGBitmapContextCreateImage(context);CGImageRelease(imageRef);9.图片变小
1 - (UIImage *)transformToSize(CGSize)newSize{ 2 UIGraphicsBeginImageContext(newSize); 3 [self drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 4 UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 5 UIGraphicsEndImageContext(); 6 return scaledImage; 7 }