`
yangping_Account
  • 浏览: 186816 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    iphone开发的绘图软件

    C 开发的绘图程序, 包括直线,椭圆 ,矩形,曲线,撤销,清屏,颜色和线性设定,图片保存,以及相册中的图片处理功能(图片移动,放大,缩小),以及其他各种功能,集各种功能与一身,代码清晰,简洁易懂,非常适合iphone初学者.

    iphone绘图iphone绘图

    Quartz 2D is an advanced, two-dimensional drawing engine available for iPhone application development and to all Mac OS X application environments outside of the kernel. Quartz 2D provides low-level, ...

    iPhone游戏开发

    iPhone游戏开发iPhone游戏开发iPhone游戏开发iPhone游戏开发iPhone游戏开发iPhone游戏开发iPhone游戏开发iPhone游戏开发iPhone游戏开发iPhone游戏开发

    Iphone开发系列源码——Iphone主题源码

    Iphone开发系列源码——Iphone主题源码Iphone开发系列源码——Iphone主题源码Iphone开发系列源码——Iphone主题源码Iphone开发系列源码——Iphone主题源码Iphone开发系列源码——Iphone主题源码Iphone开发系列源码...

    iPhone开发实战.pdf

    iPhone开发实战 iPhone开发 iPhone iPhone4 iPhone开发实战 iPhone开发 iPhone iPhone4

    iPhone/iPad 绘图应用 Brushes.zip

    iPhone/iPad 绘图应用 Brushes ,Brushes 是一个绘图应用,支持 iPhone, iPod touch 和 iPad。

    《iPhone App开发实战手册》中文高清版

    目前市面上不乏iPhone App开发的书籍,但要做出成功的产品,需要的绝不仅仅是开发优秀的软件。本书将向你展示完整的开发过程,从下载工具,开发应用,进行测试,通过苹果的审核,到推销和维护你的产品。本书适合...

    iphone创意开发入门与实践总结

    iphone创意开发入门与实践总结

    iPhone开发基础教程电子书

    开发几个自己的小游戏。比如超级玛利、雷电什么的。如果要进一步深入学习cocos2d,那里仔细研究它里面testBed里面的例子工程是非常不错的选择,还有box2d testbed里面的例子。(现在大部分排名靠前的游戏,比如...

    [iphone.开发书籍 高清PDF]iphone3开发基础教程.part3

    [iphone.开发书籍 高清PDF]iphone3开发基础教程.part3

    Iphone开发系列源码——iPhone版Wordpress源代码

    Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码...

    iphone开发实战

    本书全面探讨了iPhone平台的两种编程...在SDK开发方面,详细描述其各种组件和功能,包括Xcode、Interface Builder、视图控制器、用户交互、SDK工具包、加速计和GPS、媒体、图形等。 本书适合所有iPhone开发人员学习参考

    Iphone开发系列源码——Image图片缩放随着手指

    Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image...

    iphone游戏开发实践指南 源代码

    iphone游戏开发实践指南每一节的源代码,以及游戏Sir Lamorak's Quest的完整的带有注释的源代码

    iPhone SDK开发 —— 无断点画任意轨迹

    iPhone sdk开发 绘图 无断点 画任意轨迹

    iPhone开发基础教程-PDF版

    iPhone开发,iPhone开发教程,iPhone开发基础教程PDF版

    iPhone开发基础教程

    《iPhone开发基础教程》内容完整丰富,具有较强的通用性,编程领域中各层次读者都能通过《iPhone开发基础教程》快速学习iPhone开发,提高相关技能。iPhone 是一种全新的移动平台,苹果公司为它推出了强大的软件开发...

    iphone官方开发文档中文版(4)图形和描画

    iphone官方开发文档中文翻译,第四章图形与描画。很不错的文档。

    iPhone游戏开发_12871881.pdf

    iPhone游戏开发_12871881.pdf

    iPhone 程序开发基础教程.pdf

    iPhone 程序开发基础教程.pdf,iPhone软件工程师可以看看。

Global site tag (gtag.js) - Google Analytics