cocoa 绘图

我们知道,Cocoa程序是完全支持多语言的,包括iPhone中的程序。这里简单介绍一下制作多语言iPhone程序的方法,同时也是iPhone中显示 中文的最好办法。 XCode中支持多语言 在项目中点右键

cocoa 绘图

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. CGContextRefcontext=NULL;
  9. CGColorSpaceRefcolorSpace;
  10. void*bitmapData;
  11. intbitmapByteCount;
  12. intbitmapBytesPerRow;
  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. UIGraphicsBeginImageContext(yourView.frame.size);
  3. [[yourViewlayer]renderInContext:UIGraphicsGetCurrentContext()];
  4. UIImage*screenshot=UIGraphicsGetImageFromCurrentImageContext();
  5. UIGraphicsEndImageContext();
  6. from:http://www.cppblog.com/zhangyuntaoshe/articles/123066.html

合并两张bit图到一张image的方法


  1. Tographicallymergetwoimagesintoanewimage,youdosomethinglikethis:
  2. UIImage*result=nil;
  3. unsignedchar*data=calloc(1,size.width*size.height*kBytesPerPixel);
  4. if(data!=NULL){
  5. //kCGImageAlphaPremultipliedLast为预记录的#definevalue
  6. //设置context上下文
  7. CGContextRefcontext=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. [imagedrawInRect:imageRect];
  16. [image2drawInRect:image2Rect];
  17. UIGraphicsPopContext();
  18. CGImageRefimageRef=CGBitmapContextCreateImage(context);
  19. if(imageRef!=NULL){
  20. result=[UIImageimageWithCGImage:imageRef];
  21. CGImageRelease(imageRef);
  22. }
  23. CGContextRelease(context);
  24. }
  25. free(data);
  26. }
  27. returnresult;

关键方法:


  1. CGContextRefcontext=CGBitmapContextCreate();
  2. CGContextTranslateCTM();
  3. CGContextScaleCTM();
  4. CGImageRefimageRef=CGBitmapContextCreateImage(context);
  5. CGImageRelease(imageRef);

小结:iPhone图形开发绘图教程的内容介绍完了,希望本文对你有所帮助!