IOS开发之—绘图
2011-12-29 11:37
507 查看
iPhone图形开发绘图教程是本文要介绍的内容,介绍了很多关于绘图类的使用,先来看详细内容讲解。
1、绘图总结:
绘图前设置:
绘图后设置:
注: 画完图后,必须 先用CGContextStrokePath来描线,即形状,后用CGContextFillPath来填充形状内的颜色.
2.常见图形绘制:
3.常见控制方法:
4.创建内存图像context:
5.图形的变换:
6.常用函数:
7.从原图片中取小图.
8.屏幕快照:
合并两张bit图到一张image的方法
关键方法:
小结:iPhone图形开发绘图教程的内容介绍完了,希望本文对你有所帮助!
1、绘图总结:
绘图前设置:
CGContextSetRGBFillColor/CGContextSetFillColorWithColor //填充色 CGContextSetRGBStrokeColor/CGContextSetStrokeColorWithColor //笔颜色 CGContextSetLineWidth //线宽度
绘图后设置:
注: 画完图后,必须 先用CGContextStrokePath来描线,即形状,后用CGContextFillPath来填充形状内的颜色.
2.常见图形绘制:
CGContextFillRect/CGContextFillRects CGContextFillEllipseInRect CGContextAddRect/CGContextAddRects CGContextAddEllipseInRect CGContextAddLines CGContextMoveToPoint CGContextAddLineToPoint
3.常见控制方法:
CGContextSaveGState CGContextRestoreGState
4.创建内存图像context:
CGBitmapContextCreate <-----CGContextRlease释放 CGColorSpaceCreateWithName (KCGColorSpaceGenericRGB) CGColorSpaceRlease CGBitmapContextCreateImage() <-----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.图形的变换:
CGContextTranslateCTM CGContextRotateCTM CGContextScaleCTM
6.常用函数:
CGRectContainsPoint(); CGRectContainsRect(); CGRectIntersectsRect(); CGRectIntersection(); CGPointEqualToPoint(); CGSizeEqualToSize();
7.从原图片中取小图.
CGImageCreateWithImageInRect
8.屏幕快照:
#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 为下载的背景图片,用于比较context CGContextTranslateCTM(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);
小结:iPhone图形开发绘图教程的内容介绍完了,希望本文对你有所帮助!
相关文章推荐
- iOS开发UI篇—Quartz2D使用(绘图路径)
- IOS开发之——绘图(CGContext)
- IOS 图形开发绘图小结
- 【深入浅出IOS开发】IOS绘图基础
- IOS开发(108)之Quartz 2D绘图实例演示
- iOS开发 - Quartz2D绘图
- iOS开发之Quartz 2D绘图高阶用法(二)
- IOS开发-利用绘图表示进度
- iOS开发-Quartz2D上下文栈的操作&详细分析绘图本质(图形上下文栈)
- iOS开发UI篇—Quartz2D使用(绘图路径)
- ios开发中关于绘图的问题
- iOS开发UI篇—Quartz2D使用(绘图路径)
- 位置高度ios 开发中跟绘图相关的CGFloat,CGPoint,CGSize,CGRect,CGRectZero
- iOS开发之高效绘图,通过一个绘图应用进行讲解
- IOS开发(106)之Quartz和OpenGL绘图初窥
- IOS开发之Quart绘图方法简介
- IOS开发之Quartz2D绘图
- iOS开发 高级绘图
- IOS开发之——绘图(CGContext)
- 【深入浅出IOS开发】IOS绘图基础