IOS 图形开发绘图小结
iPhone图形开发绘图教程是本文要介绍的内容,介绍了很多关于绘图类的使用,先来看详细内容讲解。
1、绘图总结:
绘图前设置:
1. CGContextSetRGBFillColor/CGContextSetFillColorWithColor //填充色
2. CGContextSetRGBStrokeColor/CGContextSetStrokeColorWithColor //笔颜色
3. CGContextSetLineWidth //线宽度
绘图后设置:
注: 画完图后,必须先用CGContextStrokePath来描线,即形状,后用CGContextFillPath来填充形状内的颜色.
2.常见图形绘制:
1. CGContextFillRect/CGContextFillRects
2. CGContextFillEllipseInRect
3. CGContextAddRect/CGContextAddRects
4. CGContextAddEllipseInRect
5. CGContextAddLines
6. CGContextMoveToPoint
7. CGContextAddLineToPoint
3.常见控制方法:
1. CGContextSaveGState
2. CGContextRestoreGState
4.创建内存图像context:
1. CGBitmapContextCreate <-----CGContextRlease释放
2. CGColorSpaceCreateWithName (KCGColorSpaceGenericRGB)
3. CGColorSpaceRlease
4. CGBitmapContextCreateImage() <-----CGImageRlease 释放.
5. eg:
6. CGContextRefMyCreateBitmapContext(intpixelsWide,intpixelsHigh)
7. {
8. CGContextRef context=NULL;
9. CGColorSpaceRefcolorSpace;
10. void* bitmapData;
11. int bitmapByteCount;
12. int bitmapBytesPerRow;
13. bitmapBytesPerRow =(pixelsWide*4);
14. bitmapByteCount =(bitmapBytesPerRow*pixelsHigh);
15. colorSpace=CGColorSpaceCreateDeviceRGB();
16. bitmapData=malloc(bitmapByteCount);
17. if(bitmapData==NULL)
18. {
19. fprintf(stderr,"Memorynotallocated!");
20. returnNULL;
21. }
22. context=CGBitmapContextCreate(bitmapData,
23. pixelsWide, pixelsHigh, 8,
24. bitmapBytesPerRow, colorSpace,
25. kCGImageAlphaPremultipliedLast);
26. if(context==NULL)
27. {
28. free(bitmapData);
29. fprintf(stderr,"Contextnotcreated!");
30. returnNULL;
31. }
32. CGColorSpaceRelease(colorSpace);
33. returncontext;
34. }
5.图形的变换:
1. CGContextTranslateCTM
2. CGContextRotateCTM
3. CGContextScaleCTM
6.常用函数:
1. CGRectContainsPoint();
2. CGRectContainsRect();
3. CGRectIntersectsRect();
4. CGRectIntersection();
5. CGPointEqualToPoint();
6. CGSizeEqualToSize();
7.从原图片中取小图.
1. CGImageCreateWithImageInRect
8.屏幕快照:
1. #import "QuartzCore/QuartzCore.h"
2.
3. UIGraphicsBeginImageContext(yourView.frame.size);
4. [[yourView layer] renderInContext:UIGraphicsGetCurrentContext()];
5. UIImage*screenshot =UIGraphicsGetImageFromCurrentImageContext();
6. UIGraphicsEndImageContext();
7. from:http://www.cppblog.com/zhangyuntaoshe/articles/123066.html
合并两张bit图到一张image的方法
1. To graphically merge two images into a new image, you do something like this:
2. UIImage *result = nil;
3. unsignedchar *data = calloc(1,size.width*size.height*kBytesPerPixel);
4. if (data != NULL) {
5. // kCGImageAlphaPremultipliedLast 为预记录的#define value
6. // 设置context上下文
7. CGContextRef context = CGBitmapContextCreate(
8. data, size.width, size.height, 8, size.width*kBytesPerPixel,
9. CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast);
10. if (context != NULL) {
11. UIGraphicsPushContext(context);
12. // Image 为下载的背景图片,用于比较context
13. CGContextTranslateCTM(context, 0, size.height);
14. CGContextScaleCTM(context, 1, -1);
15. [image drawInRect:imageRect];
16. [image2 drawInRect:image2Rect];
17. UIGraphicsPopContext();
18. CGImageRef imageRef = CGBitmapContextCreateImage(context);
19. if (imageRef != NULL) {
20. result = [UIImageimageWithCGImage:imageRef];
21. CGImageRelease(imageRef);
22. }
23. CGContextRelease(context);
24. }
25. free(data);
26. }
27. return result;
关键方法:
1. CGContextRef context = CGBitmapContextCreate();
2. CGContextTranslateCTM();
3. CGContextScaleCTM();
4. CGImageRef imageRef = CGBitmapContextCreateImage(context);
5. CGImageRelease(imageRef);
iPhone图形开发绘图教程是本文要介绍的内容,介绍了很多关于绘图类的使用,先来看详细内容讲解。
1、绘图总结:
绘图前设置:
1. CGContextSetRGBFillColor/CGContextSetFillColorWithColor //填充色
2. CGContextSetRGBStrokeColor/CGContextSetStrokeColorWithColor //笔颜色
3. CGContextSetLineWidth //线宽度
绘图后设置:
注: 画完图后,必须先用CGContextStrokePath来描线,即形状,后用CGContextFillPath来填充形状内的颜色.
2.常见图形绘制:
1. CGContextFillRect/CGContextFillRects
2. CGContextFillEllipseInRect
3. CGContextAddRect/CGContextAddRects
4. CGContextAddEllipseInRect
5. CGContextAddLines
6. CGContextMoveToPoint
7. CGContextAddLineToPoint
3.常见控制方法:
1. CGContextSaveGState
2. CGContextRestoreGState
4.创建内存图像context:
1. CGBitmapContextCreate <-----CGContextRlease释放
2. CGColorSpaceCreateWithName (KCGColorSpaceGenericRGB)
3. CGColorSpaceRlease
4. CGBitmapContextCreateImage() <-----CGImageRlease 释放.
5. eg:
6. CGContextRefMyCreateBitmapContext(intpixelsWide,intpixelsHigh)
7. {
8. CGContextRef context=NULL;
9. CGColorSpaceRefcolorSpace;
10. void* bitmapData;
11. int bitmapByteCount;
12. int bitmapBytesPerRow;
13. bitmapBytesPerRow =(pixelsWide*4);
14. bitmapByteCount =(bitmapBytesPerRow*pixelsHigh);
15. colorSpace=CGColorSpaceCreateDeviceRGB();
16. bitmapData=malloc(bitmapByteCount);
17. if(bitmapData==NULL)
18. {
19. fprintf(stderr,"Memorynotallocated!");
20. returnNULL;
21. }
22. context=CGBitmapContextCreate(bitmapData,
23. pixelsWide, pixelsHigh, 8,
24. bitmapBytesPerRow, colorSpace,
25. kCGImageAlphaPremultipliedLast);
26. if(context==NULL)
27. {
28. free(bitmapData);
29. fprintf(stderr,"Contextnotcreated!");
30. returnNULL;
31. }
32. CGColorSpaceRelease(colorSpace);
33. returncontext;
34. }
5.图形的变换:
1. CGContextTranslateCTM
2. CGContextRotateCTM
3. CGContextScaleCTM
6.常用函数:
1. CGRectContainsPoint();
2. CGRectContainsRect();
3. CGRectIntersectsRect();
4. CGRectIntersection();
5. CGPointEqualToPoint();
6. CGSizeEqualToSize();
7.从原图片中取小图.
1. CGImageCreateWithImageInRect
8.屏幕快照:
1. #import "QuartzCore/QuartzCore.h"
2.
3. UIGraphicsBeginImageContext(yourView.frame.size);
4. [[yourView layer] renderInContext:UIGraphicsGetCurrentContext()];
5. UIImage*screenshot =UIGraphicsGetImageFromCurrentImageContext();
6. UIGraphicsEndImageContext();
7. from:http://www.cppblog.com/zhangyuntaoshe/articles/123066.html
合并两张bit图到一张image的方法
1. To graphically merge two images into a new image, you do something like this:
2. UIImage *result = nil;
3. unsignedchar *data = calloc(1,size.width*size.height*kBytesPerPixel);
4. if (data != NULL) {
5. // kCGImageAlphaPremultipliedLast 为预记录的#define value
6. // 设置context上下文
7. CGContextRef context = CGBitmapContextCreate(
8. data, size.width, size.height, 8, size.width*kBytesPerPixel,
9. CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedLast);
10. if (context != NULL) {
11. UIGraphicsPushContext(context);
12. // Image 为下载的背景图片,用于比较context
13. CGContextTranslateCTM(context, 0, size.height);
14. CGContextScaleCTM(context, 1, -1);
15. [image drawInRect:imageRect];
16. [image2 drawInRect:image2Rect];
17. UIGraphicsPopContext();
18. CGImageRef imageRef = CGBitmapContextCreateImage(context);
19. if (imageRef != NULL) {
20. result = [UIImageimageWithCGImage:imageRef];
21. CGImageRelease(imageRef);
22. }
23. CGContextRelease(context);
24. }
25. free(data);
26. }
27. return result;
关键方法:
1. CGContextRef context = CGBitmapContextCreate();
2. CGContextTranslateCTM();
3. CGContextScaleCTM();
4. CGImageRef imageRef = CGBitmapContextCreateImage(context);
5. CGImageRelease(imageRef);