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. UIGraphicsBeginImageContext(yourView.frame.size);
  3. [[yourView layer] renderInContext:UIGraphicsGetCurrentContext()];
  4. UIImage*screenshot =UIGraphicsGetImageFromCurrentImageContext();
  5. UIGraphicsEndImageContext();
  6. 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图形开发绘图小结的更多相关文章

  1. (转载)如何学好iphone游戏开发

    转自:http://www.cnblogs.com/zilongshanren/archive/2011/09/19/2181558.html 自从发布<如何学习iphone游戏开发>到 ...

  2. 前端开发个人小结 · Retrospection的博客

    序 2018年转眼来到了最后一个月,算下来我进入前端之门也有一年了,虽然下半年由于忙于筹备毕业论文的相关事项,前端这一块有所放下,但是想想还是给自己这一年的学习做一个总结. 现代化软件开发确实是一个复 ...

  3. iPhone应用开发 UITableView学习点滴详解

    iPhone应用开发 UITableView学习点滴详解是本文要介绍的内容,内容不多,主要是以代码实现UITableView的学习点滴,我们来看内容. -.建立 UITableView DataTab ...

  4. VB6 GDI+ 入门教程[5] 基础绘图小结

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[5] 基础绘图小结 2009 年 6 月 18 日 4条 ...

  5. iPhone OS 开发 - 了解并解决代码签名问题

    译者:Jestery 发表时间:2010-04-24浏览量:21082评论数:0挑错数:0 了解并解决代码签名问题 (为保持跟开发环境以及APPLE开发者社区网站结构对应,一些名词未作翻译) 绝大多数 ...

  6. IbatisNet开发使用小结

    一.   介绍 平常做企业级应用,需求变化是经常的事,而很多基础代码重复也是很让人头疼的问题.所以很多人会使用一些ORM框架来增强项目的可维护性.可扩展性.IBatis.Net就是一个比较易用的ORM ...

  7. JAVA 图形开发之计算器设计(事件监听机制)

    /*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 1978702969@qq.com*/ 前段时间刚帮同学用MFC写了个计算器,现在学到JAVA的图形开发,就试着水了一个计算器出来.(可以说 ...

  8. iPhone 应用开发的5个贴士

    [编者按]本文作者为来自 Redbytes Software 的开发者 James Richard,主要介绍开发 iPhone 应用过程中大有益处的五个贴士.文章系国内 ITOM 管理平台 OneAP ...

  9. ARC官方文档翻译! - iPhone App开发外包专区 - 威锋论坛 - 威锋网

    CHENYILONG Blog ARC官方文档翻译! - iPhone App开发外包专区 - 威锋论坛 - 威锋网  http://bbs.weiphone.com/read-htm-tid-344 ...

随机推荐

  1. 初探HTML

    就在今天我抱着试一试的态度稍微看了下HTML5, 尝试着接触一点新知识, 虽然学的并不多, 但是还是异常的兴奋, 感觉有好多东西和之前的不一样了, 包括控件的创建和一些属性的设置等, 总之这些变化与改 ...

  2. windows下netstat -aon命令

    windows平台下netstat常用命令 C:\Users\Administrator>netstat --help 显示协议统计和当前 TCP/IP 网络连接. NETSTAT [-a] [ ...

  3. C#遍历Object各个属性含List泛型嵌套。

    同事遇到一个问题:在做手机app接口时,返回JSON格式,json里面的数据属性均是string类型,但不能出现NULL(手机端那边说处理很麻烦,哎).Model已经创建好了,而且model的每个属性 ...

  4. viewstate加密(转)

    ViewState在客户端展开的时候,默认是Auto,不加密的,如果页面有限制性的表单控件才加密,所以,可以查看,代码如下: byte[] bytes = Convert.FromBase64Stri ...

  5. How to resolve the SQL error “cannot connect to WMI provider”

    当你试图打开SQL Server Configuation Manager时发现如下错误: “cannot connect to WMI provider. You do not have permi ...

  6. String new赋值、直接赋值

    String类是final的.String str = new String("Hello"); //创建了两个对象系统会先创建一个匿名对象"Hello"存入堆 ...

  7. C#重写Equals方法步骤

    检查传入的参数是否为null, 如果为null,那么返回false, 否则执行步骤2 调用ReferenceEquals查看是否为统一个对象,如果是,那么返回true, 否则执行步骤3 判断两者是否为 ...

  8. CSS凹型导航按钮

    一般需求,圆角看起来更加舒服,但是下面直角略显生硬 于是设计师有了下面的需求,下面加上小凹型: 凹型?凹型?凹型?有点变态,这怎么实现........... 图片肯定是最先考虑到的,CSS实现有貌似有 ...

  9. log4j配置文件及nutch中的日志配置

    使用slf4j作为日志系统时,由于slf4j只是一个接口,它需要一个具体实现来执行. 具体参考http://blog.csdn.net/jediael_lu/article/details/43854 ...

  10. MSSQL-资源地址

    1.SQL-SERVER客户端管理工具.下载地址 https://msdn.microsoft.com/en-us/library/mt238290.aspx?f=255&MSPPError= ...