1. * Quartz2D简介
  2. 1.什么是Quartz2D?
  3. 他是一个二维的绘图引擎,同时支持iOSMac系统
  4. 2.Quartz2D能完成的工作
  5. 画基本线条,绘制文字,图片,截图,自定义UIView.
  6. 3.Quartz2D在开发中的价值
  7. 当我们的控件样式极其复杂时,可以把控件内部的结构给画出画,就是自定义控件.
  8. 5.什么是图形上下文,上下文的类型有哪些?
  9. 图形上下文是用来保存用户绘制的内容状态,并决定绘制到哪个地方的.
  10. 用户把绘制好的内容先保存到图形上下文,
  11. 然后根据选择的图形上下文的不同,绘制的内容显示到地方也不相同,即输出目标也不相同.
  12. 图形上下文的类型有:
  13. Bitmap Graphics Context(位图上下文)
  14. PDF Graphics Context
  15. Window Graphics Context
  16. Layer Graphics Context(图层上下文,自定义UIView取得上下文就是图层上下文.
  17. UIView之所以能够显示就是因为他内部有一个图层)
  18. Printer Graphics Context
  19. 6.如何自定义UIView,步骤是什么?
  20. 首先得要有上下文,有了上下文才能决定把绘制的东西显示到哪个地方去.
  21. 其次就是这个上下文必须得和View相关联.才能将内容绘制到View上面.
  22. 步骤:
  23. 1.要先自定定UIView
  24. 2.实现DrawRect方法
  25. 3.DrawRect方法中取得跟View相关联的上下文.
  26. 4.绘制路径(描述路径长什么样).
  27. 5.把描述好的路径保存到上下文(即:添加路径到上下文)
  28. 6.把上下文的内容渲染到View
  29. * 基本线条绘制
  1. 1.DrawRect方法作用?什么时候调用.
  2. DrawRect作用:专用在这个方法当中绘图的.只有在这个方法当中才能取得跟View相关联的上下文.
  3. DrawRect是系统自己调用的, 它是当View显示的时候自动调用.
  4. 2.画线(基本步骤描述)
  5. 2.1获取跟View相关联的上下文
  6. CGContextRef ctx = UIGraphicsGetCurrentContext();
  7. 2.2绘制路径
  8. UIBezierPath *path = [UIBezierPath bezierPath];
  9. 2.2.1设置起点
  10. [path moveToPoint:CGPointMake(10, 125)];
  11. 2.2.2添加一根线到某个点
  12. [path addLineToPoint:CGPointMake(200, 125)];
  13. 2.3把路径添加到上下文
  14. CGContextAddPath(ctx,path.CGPath);
  15. 2.4把上下文的内容渲染到View上面.
  16. CGContextStrokePath(ctx);
  17. 3. 想要再添加一根线怎么办?
  18. 第一种方法:重新设置起点,添加一根线到某个点,一个UIBezierPath路径上面可以有多条线.
  19. 第二种方法:直接在原来的基础上添加线.把上一条的终点当做下一条线的起点.添加一根线到某个点
  20. 直接在下面addLineToPoint:
  21. 4.怎么样设置线的宽度,颜色,样式?
  22. 设置这些样式,我们称为是修改图形上下文的状态.
  23. 设置线宽:CGContextSetLineWidth(ctx, 20);
  24. 设置线段的连接样式: CGContextSetLineJoin(ctx, kCGLineJoinRound);
  25. 添加顶角样式:CGContextSetLineCap(ctx, kCGLineCapRound);
  26. 设置线的颜色: [[UIColor redColor] setStroke];
  27. 5.如何画曲线?
  28. 画曲线方法比较特殊需要一个控制点来决定曲线的弯曲程度.画曲线方法为:
  29. 先设置一个曲线的起点
  30. [path moveToPoint:CGPointMake(10, 125)];
  31. 再添加到个点到曲线的终点.同时还须要一个controlPoint(控件点决定曲线弯曲的方法程序)
  32. [path addQuadCurveToPoint:CGPointMake(240, 125) controlPoint:CGPointMake(125, 10)];
  33. 6.如何画矩形,圆角矩形?
  34. 画矩形直接利用UIBezierPath给我们封装好的路径方法
  35. (x,y)点决定了矩形左上角的点在哪个位置
  36. (width,height)是矩形的宽度高度
  37. bezierPathWithOvalInRect:CGRectMake(x, y, width, height)
  38. 圆角矩形的画法多了一个参数,cornerRadius
  39. cornerRadius它是矩形的圆角半径.
  40. 通过圆角矩形可以画一个圆.当矩形是正方形的时候,把圆角半径设为宽度的一半,就是一个圆.
  41. bezierPathWithRoundedRect:CGRectMake(10, 100, 50, 50) cornerRadius:10
  42. 7.如果画椭圆,圆?
  43. 画椭圆的方法为:
  44. 前两个参数分别代码圆的圆心,后面两个参数分别代表圆的宽度,与高度.
  45. 宽高都相等时,画的是一个正圆, 不相等时画的是一个椭圆
  46. bezierPathWithOvalInRect:CGRectMake(10, 100, 50, 50)
  47. 8.如何利用UIKit封装的上下文进行画图?
  48. 直接来个:[path stroke]就可以了.
  49. 它底层的实现,就是获取上下文,拼接路径,把路径添加到上下文,渲染到View
  50. 9.如何画圆弧?
  51. 首先要确定圆才能确定圆弧,圆孤它就圆上的一个角度嘛
  52. Center:圆心
  53. radius:圆的半径
  54. startAngle:起始角度
  55. endAngle:终点角度
  56. clockwise:Yes顺时针,No逆时针
  57. 注意:startAngle角度的位置是从圆的最右侧为0度.
  58. UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(125, 125)
  59. radius:100
  60. startAngle:0
  61. endAngle:M_PI * 2
  62. clockwise:YES];
  63. 10.如果画扇形.
  64. 画扇形的方法为:先画一个圆孤再添加一个一根线到圆心,然后关闭路径.
  65. 关闭路径就会自动从路径的终点到路径的起点封闭起下
  66. 用填充的话,它会默认做一个封闭路径,从路径的终点到起点.
  67. [path fill];
  1.  

Quartz2D简介及基本线条绘制的更多相关文章

  1. IOS Quartz2D简介

    Quartz2D 简介( 后续会有相关应用) 第一部分 绘制直线 代码示例: - (void)drawRect:(CGRect)rect{ //获取图形上下文 CGContextRef cxConte ...

  2. Canvas:橡皮筋线条绘制

    Canvas:橡皮筋线条绘制 效果演示 实现要点 事件监听 [说明]: 在Canvas中检测鼠标事件是非常简单的,可以在canvas中添加一个事件监听器,当事件发生时,浏览器就会调用这个监听器. 我们 ...

  3. canvas(一) 基本线条绘制

    var dom = document.getElementById('canvasItem'), ctx = dom.getContext('2d'); //坐标位置默认基于 浏览器窗口(0,0),此 ...

  4. iOS:quartz2D绘图(给图形绘制阴影)

    quartz2D既可以绘制原始图形,也可以给原始图形绘制阴影. 绘制阴影时,需要的一些参数:上下文.阴影偏移量.阴影模糊系数 注意:在drawRect:方法中同时调用绘制同一个图形时,在对绘制的图形做 ...

  5. 基于canvas线条绘制图形

    原理说明 绘制一个正方形,正放心每条边等比例均分,具体分配多少根据自身情况而定,按照最上边边顺时针方向依次绘制线条,相邻两条边上的点依次连接,知道所有的点全部连接完便绘制完成. 示例效果图图如下 具体 ...

  6. iOS:quartz2D绘图(处理图像,绘制图像并添加水印)

    绘制图像既可以重写drawRect:方法并在该方法中绘制,也可以不用重写该方法,它有封装好的函数获取自己的图像绘制上下文,即UIGraphicsBeginImageContext(CGSize siz ...

  7. Quartz2D简介

    Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作:

  8. Android开发——xml知识之xml可绘制对象简介

    引言:摘录Android用户界面设计 Android支持各类xml可绘制对象,其中一些可绘制对象可用于实现让一个资源使用多个图片文件,另外一些则允许你在xml中真正地指定颜色,还有一些你从来都不会用到 ...

  9. iOS:quartz2D绘图(在PDF文件上绘制图片)

    quartz2D还可以在PDF文件上绘制图片,它有自己的PDF Graphics Context上下文,通过UIGraphicsBeginPDFContextToFile方法开始上下文后就可以绘制图片 ...

随机推荐

  1. [NetTopologySuite](2)任意多边形求交

    任意多边形求交: private void btnPolygon_Click(object sender, EventArgs e) { , , , , , , , , , , , , , }; , ...

  2. mysql 快速生成百万条测试数据

    1.生成思路 利用mysql内存表插入速度快的特点,先利用函数和存储过程在内存表中生成数据,然后再从内存表插入普通表中 2.创建内存表及普通表 CREATE TABLE `vote_record_me ...

  3. Linux下原子性操作,类似Windows下的InterLockedXXX

    其中,这些操作的操作数(type) 可以是1,2,4或8字节长度的int类型,即: int8_t / uint8_t int16_t / uint16_t int32_t / uint32_t int ...

  4. asp.net 登陆验证 Form表单验证的3种方式 FormsAuthentication.SetAuthCookie;FormsAuthentication.RedirectFromLoginPage;FormsAuthenticationTicket

    我们在登陆成功后,使用下面的3种方法,都是同一个目的:创建身份验证票并将其附加到 Cookie, 当我们用Forms认证方式的时候,可以使用HttpContext.Current.User.Ident ...

  5. JAX-WS(二)之使用wsimport创建WebService客户端

    客户端开发的通常过程是从已有的WSDL处罚,创建辅助类JAXB对象和Service代理类,然后基于这些类开发自己的客户端应用. 开发步骤: 创建eclipse项目: 运行wsimport命令生成客户端 ...

  6. PostgreSQL 系统的基本体系结构

    PostgreSQL 使用客户机/服务器(C/S)的模式提供服务,一个PostgreSQL会话由下列相关的进程(程序)组成: (1)一个服务器端进程.该进程管理数据库文件,接受客户端与数据库的连接,且 ...

  7. uva 11178 - Morley's Theorem

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  8. [原创]java WEB学习笔记74:Struts2 学习之路--自定义拦截器,struts内建的拦截器

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. [转]有哪些值得关注的技术博客(Java篇)

    有哪些值得关注的技术博客(Java篇)   大部分程序员在自学的道路上不知道走了多少坑,这个视频那个网站搞得自己晕头转向.对我个人来说我平常在学习的过程中喜欢看一些教程式的博客.这些博客的特点: 1. ...

  10. Could not create the view: An unexpected exception was thrown.如何解决

    今天打开Myeclipse10的时候,发现server窗口出现一堆问题,问题如标题,然后下方出现了一堆java.lang.NullPointerException的问题. java.lang.Null ...