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. 原生 javascript 学习之 js变量

    1.变量的命名 方法的命名(驼峰命名法) 全部小写 : 单词与单词之间全部下划线 (my_namespace) 大小写混合 : 第一个单词首字母小写其他单词首字母大写. 规则 首字符 英文字母或下划线 ...

  2. python 安装 memcache

    方式一: python3 -m pip install python-memcached 方式二: pip3 install python-memcached 方式三: tar zxf python- ...

  3. python - socket模块1

    1.使用生活中的接打电话,解释socket通信流程  2.根据上图,写出socket通信的伪代码 2.1.server端伪代码 #买手机   #买手机卡 #开机 #等待电话 #收消息 #发消息 #挂电 ...

  4. Ubantu下编译Linux Kernel

    wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.9.3.tar.gztar -xzf linux-3.9.3.tar.gzcd li ...

  5. 用web技术开发出原生的App应用的体会(1)

    本人是是个前端小白,学前端已经有半年的时间了,前几天开了个博客,希望记录自己学习历程的点滴. 今天要写的是关于用html,css,javascript等web技术开发原生的app应用. 总所周知,we ...

  6. 另类的package-info.java文件探讨

    原文地址:http://strong-life-126-com.iteye.com/blog/806246 翻看以前的笔记,看到一个特殊的java文件:pacakge-info.java,虽然有记录, ...

  7. 【转载】Java 动态代理

    Java 动态代理 本文为 Android 开源项目源码解析 公共技术点中的 动态代理 部分项目地址:Jave Proxy,分析的版本:openjdk 1.6,Demo 地址:Proxy Demo分析 ...

  8. HTML/CSS代码片段

    内容简介:本文收集了我常用的CSS代码片段! *reset @charset "utf-8"; /* reset */ body, dl, dd, h1, h2, h3, h4, ...

  9. nginx 504 Gateway Time-out错误解决办法

    我们经常会发现大量的nginx服务器访问时会提示nginx 504 Gateway Time-out错误了,下面我来总结了一些解决办法,有需要了解的同学可进入参考. 一般看来, 这种情况可能是由于ng ...

  10. PHP & JAVA 实现 PBKDF2 加密算法

    PHP代码: /** * PBKDF2 加密函数 * 参考标准 * @link https://www.ietf.org/rfc/rfc2898.txt * * php官方函数将在php5.5发布 * ...