技术开发 频道

iPhone图形开发绘图方法小结

  【IT168技术】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图形开发绘图教程的内容介绍完了,希望本文对你有所帮助!

0
相关文章