cocoa 绘图

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


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值