http://donbe.blog.163.com/blog/static/138048021201052093633776/ 详解

代码如下:

DJView 绘制线段 基本图形

 //
// DJView.m
// 基本图形绘制
//
// Created by zjj on 15/6/27.
// Copyright (c) 2015年 zjj. All rights reserved.
// #import "DJView.h" @implementation DJView /**
* 绘制两个三角形
*/
- (void)drawRect:(CGRect)rect {
//1获取上下文
CGContextRef ctr = UIGraphicsGetCurrentContext();
//2拼接一个图形
// 2.0设置A起点
// 设置颜色
CGContextSetRGBStrokeColor(ctr, , , , );
CGContextMoveToPoint(ctr, , );
// 2.1设置A终点
CGContextAddLineToPoint(ctr, , );
CGContextAddLineToPoint(ctr, , );
// 3渲染到屏幕上(空心)
CGContextStrokePath(ctr); CGContextMoveToPoint(ctr, , );
// 设置颜色
CGContextSetRGBStrokeColor(ctr, , , , );
CGContextAddLineToPoint(ctr, , );
CGContextAddLineToPoint(ctr, , );
// 2.2设置B终点
CGContextAddLineToPoint(ctr, , );
// 2.3设置C终点
CGContextAddLineToPoint(ctr, , );
//链接终点
// CGContextClosePath(ctr);
// 3渲染到屏幕上(实心)
// CGContextFillPath(ctr);
// 3渲染到屏幕上(空心)
CGContextStrokePath(ctr);
[self hourglass];
[self juxing];
}
/**
* 绘空心矩形
*/
- (void)juxing
{
CGContextRef ctr = UIGraphicsGetCurrentContext();
// 设置线段宽度
CGContextSetLineWidth(ctr, );
// 设置颜色
// CGContextSetRGBStrokeColor(ctr, 0, 0, 0, 1);
// [[UIColor blackColor]setStroke];//(推荐设置颜色方式)
[[UIColor blackColor]set];//实心空心通用 setStroke设置空心颜色 setFill 设置实心颜色
// 设置线段头尾部样式
CGContextSetLineCap(ctr, kCGLineCapRound);
// 设置线段转折点样式
CGContextSetLineJoin(ctr, kCGLineJoinRound);
CGContextAddRect(ctr, CGRectMake(, , , ));
CGContextStrokePath(ctr);
}
- (void)hourglass
{
//1获取上下文
CGContextRef ctr = UIGraphicsGetCurrentContext();
//2拼接一个图形
// 2.0设置A起点
// 设置颜色
// CGContextSetRGBStrokeColor(ctr, 0, 1, 1, 1);
// [[UIColor blackColor] setFill];
CGContextMoveToPoint(ctr, , );
// 2.1设置A终点
CGContextAddLineToPoint(ctr, , );
CGContextAddLineToPoint(ctr, , );
CGContextAddLineToPoint(ctr, , );
CGContextAddLineToPoint(ctr, , );
// 2.2设置B终点
CGContextAddLineToPoint(ctr, , ); //链接终点
CGContextClosePath(ctr);
// 3渲染到屏幕上(空心)
// CGContextStrokePath(ctr);
// 3渲染到屏幕上(实心)
CGContextFillPath(ctr);
}
@end
DJCircle 代码 绘制几何图形
 //
// DJCircle.m
// 基本图形绘制
//
// Created by zjj on 15/6/27.
// Copyright (c) 2015年 zjj. All rights reserved.
// #import "DJCircle.h" @implementation DJCircle // Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
[self drawArc];
[self drawCircle];
}
// 画圆弧
- (void)drawArc
{
CGContextRef crf = UIGraphicsGetCurrentContext();//获得上下文
CGContextAddArc(crf,, , , , M_PI, );
[[UIColor redColor] set];//设置颜色
CGContextFillPath(crf);// 渲染 现实所绘制的东西 CGContextRef crf1 = UIGraphicsGetCurrentContext();//获得上下文
CGContextAddArc(crf1,, , , , M_PI, );
CGContextFillPath(crf1);// 渲染 现实所绘制的东西
//风车
// 上面圆弧
CGContextRef crf2 = UIGraphicsGetCurrentContext();//获得上下文
CGContextAddArc(crf2,, , , -M_PI_2, M_PI_2, );
CGContextFillPath(crf2);// 渲染 现实所绘制的东西
//右边圆弧
CGContextRef crf3 = UIGraphicsGetCurrentContext();//获得上下文
CGContextAddArc(crf3,, , , , M_PI, );
CGContextFillPath(crf3);// 渲染 现实所绘制的东西
//下边圆弧
CGContextRef crf4 = UIGraphicsGetCurrentContext();//获得上下文
CGContextAddArc(crf4,, , , -M_PI_2, M_PI_2, );
CGContextFillPath(crf4);// 渲染 现实所绘制的东西
//左边圆弧
CGContextRef crf5 = UIGraphicsGetCurrentContext();//获得上下文
CGContextAddArc(crf5,, , , , M_PI, );
CGContextFillPath(crf5);// 渲染 现实所绘制的东西
//3/4圆弧
CGContextRef crf6 = UIGraphicsGetCurrentContext();//获得上下文
CGContextAddArc(crf6,, , , M_PI_2, M_PI, );
CGContextFillPath(crf6);// 渲染 现实所绘制的东西
//1/4左边圆弧
CGContextRef crf7 = UIGraphicsGetCurrentContext();//获得上下文
CGContextAddArc(crf7,, , , M_PI, M_PI_2, );
CGContextFillPath(crf7);// 渲染 现实所绘制的东西 //25%圆
CGContextRef crf8 = UIGraphicsGetCurrentContext();//获得上下文
CGContextMoveToPoint(crf8, , );
CGContextAddLineToPoint(crf8, , );
CGContextAddArc(crf8,, , , M_PI_2, M_PI, );
CGContextClosePath(crf8);
CGContextFillPath(crf8);// 渲染 现实所绘制的东西
} - (void)drawCircle
{
//画实心圆
CGContextRef crf = UIGraphicsGetCurrentContext();//获得上下文
CGContextAddEllipseInRect(crf,CGRectMake(, , , ));//画圆
[[UIColor blueColor] set];//设置颜色
CGContextFillPath(crf);// 渲染 现实所绘制的东西
//画圆圈/圆环
CGContextRef crf1 = UIGraphicsGetCurrentContext();
CGContextAddEllipseInRect(crf1,CGRectMake(, , , ));
CGContextSetLineWidth(crf1, );
CGContextStrokePath(crf1);
//画同心圆圈/圆环
CGContextRef crf2 = UIGraphicsGetCurrentContext();
CGContextAddEllipseInRect(crf2,CGRectMake(, , , ));
CGContextSetLineWidth(crf2, );
CGContextStrokePath(crf2);
} @end
DJTextImageView 绘制图片和文字
 //
// DJTextImageView.m
// 基本图形绘制
//
// Created by zjj on 15/6/28.
// Copyright (c) 2015年 zjj. All rights reserved.
// #import "DJTextImageView.h" @implementation DJTextImageView
/**
* 涂鸦 withAttributes: 字典设置用什么属性 如颜色字体大小
*/
- (void)drawRect:(CGRect)rect
{
[self drawImg];
[self drawTest]; }
- (void)drawImg
{ UIImage *img = [UIImage imageNamed:@"格子1.jpg"];
// [img drawAtPoint:CGPointZero];
// [img drawInRect:CGRectMake(110, 10, 100, 100)];
[img drawAsPatternInRect:CGRectMake(, , , )];//平铺图片
NSString *strShuiyin = @"水印http://www.DJweibo.com/168";
UIImage *pngs = [UIImage imageNamed:@"格子.jpg"];
NSMutableDictionary *arrs = [NSMutableDictionary dictionary];
arrs[NSForegroundColorAttributeName] = [UIColor whiteColor];
[strShuiyin drawInRect:CGRectMake(, , , ) withAttributes:arrs];
[pngs drawInRect:CGRectMake(, , , )]; } /**
* 画文字 withAttributes: 字典设置用什么属性 如颜色字体大小
*/
- (void)drawTest
{
CGRect rects = CGRectMake(, , , );
// 画一个矩形框
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextAddRect(ctx, rects);
// CGContextFillPath(ctx);
CGContextStrokePath(ctx);
//画文字
NSMutableDictionary *arrs = [NSMutableDictionary dictionary];
arrs[NSForegroundColorAttributeName] = [UIColor redColor];
arrs[NSFontAttributeName] = [UIFont systemFontOfSize:]; NSString *str = @"土地是以它的肥沃和收获而被估价的;才能也是土地,不过它生产的不是粮食,而是真理。如果只能滋生瞑想和幻想的话,即使再大的才能也只是砂地或盐池,那上面连小草也长不出来的。 —— 别林斯基";
//[str drawAtPoint:CGPointZero withAttributes:nil];
[str drawInRect:rects withAttributes:arrs];
}
@end

Quartz2D的更多相关文章

  1. Quartz2D总结

    天了噜,脑子完全懵了,最起码说出来个上下文啊,连这个都给忘了,特此总结一下,并以此缅怀这次面试 Quartz2D的API来自于Core Graphics(这就是为什么CGContextRef是以CG开 ...

  2. 【原】iOS学习之Quartz2D(1)

    什么是Quartz2D 1.Quartz 2D 是一个二维绘图引擎,同时支持iOS和Mac系统 2.Quartz 2D 能完成的工作: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成 ...

  3. Quartz2D 编程指南(三)渐变、透明层 、数据管理

    概览 图形上下文 路径 颜色与颜色空间 变换 图案 阴影 渐变 透明层 Quartz 2D 中的数据管理 位图与图像遮罩 CoreGraphics 绘制 Layer 渐变 简介 渐变是从一个颜色到另外 ...

  4. Quartz2D 编程指南(一)概览、图形上下文、路径、颜色与颜色空间

    概览 图形上下文 路径 颜色与颜色空间 变换 图案 阴影 渐变 透明层 Quartz 2D 中的数据管理 位图与图像遮罩 CoreGraphics 绘制 Layer 0.说明 本篇博客主要是对官方文档 ...

  5. Quartz2D之绘制一个简单的机器猫

    学习iOS有一段时间了,在博客园也默默的潜水了两个月,见识了很多大神,收获不少. 今天整理笔记,发现忘记的不少,我感觉需要及时的整理一下了,同时也把做的小东西贴上来和大家分享一下. 最近学习了Quar ...

  6. Quartz2D 画大白

    今天初始Quartz2D,我好激动啊,也好开心,莫名的会喜欢带有图形相关的课程…… 好啦,闲话少说,今天用Quartz2D方法画了最最爱的大白.迫不及待的想要和大家分享. 1.首先实例化了view 2 ...

  7. Quartz2D复习(一)--- 基础知识 / 绘制线段圆弧 / 图片水印 / 截图

    1.Quartz 2D是一个二维绘图引擎,同时支持ios和Mac系统: Quart2D的API是纯C语言的,API来自于Core  Graphics框架: 2.Quartz 2D可以绘制图形(线段/三 ...

  8. Quartz-2D

    Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境.我们可以使用Quartz 2D API来实现许多功能,如基本路径的绘制.透明度.描影.绘制阴影.透明层.颜色管理.反锯齿 ...

  9. iOS开发——UI进阶篇(十五)Quartz2D介绍

    一.Quartz2D简介 1.什么是Quartz2DQuartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作绘制图形 : 线条\三角形\矩形\圆\弧等绘制文字绘 ...

  10. iOS开发UI篇—Quartz2D使用(绘制基本图形)

    iOS开发UI篇—Quartz2D使用(绘制基本图形) 一.简单说明 图形上下文(Graphics Context):是一个CGContextRef类型的数据 图形上下文的作用:保存绘图信息.绘图状态 ...

随机推荐

  1. activiti jbpm相关资源

    Activiti 5.16 用户手册 http://www.mossle.com/docs/activiti/index.html jBPM 4.4开发指南 http://www.mossle.com ...

  2. Python中的Class的讨论

    尽管Python在Function Programming中有着其他语言难以企及的的优势,但是我们也不要忘了Python也是一门OO语言哦.因此我们关注Python在FP上的优势的同时,还得了解一下P ...

  3. 在Linux下运行C语言程序

    市面上常见的Linux都是发行版本,典型的Linux发行版包含了Linux内核.桌面环境和各种常用的必备工具,国内使用较多的是Ubuntu(乌班图).CentOS.Deepin(深度Linux).本教 ...

  4. JDK里面常用的包

    1.java.lang-------java里的核心类,如String.Math.Integer.System.Thread,java.lang里还有一个子包:java.lang.reflect用于实 ...

  5. C++ Primer 第二章 引用 指针 const限定符

    1.引用: 为对象起了另外一个名字,引用类型引用另外一种类型,通过将声明符写成&d的形式来定义引用类型,其中d也就是声明的变量名(声明符就是变量名). PS:1.通过图片中编译所提示的报错信息 ...

  6. phalcon: eventManager事件管理(结合dispatcher调度控制器)制作简单的acl

    制作简单的acl, dispatcher(专门用来加载或调度或跳转到相应的url地址即XXXcontroller的调度器或控制器,能够在controller执行前对controller进行停止跳转等) ...

  7. FileReader本地预览图片

    <body> <p><label>请选择一个图像文件:</label><input type="file" id=" ...

  8. android 模拟器 使用键盘的配置

    1 打开 android Manageer , 克隆一个设备 2.

  9. discuz核心类库class_core的函数注释

    class discuz_core { // 数据库存储引擎 var $db = null; // 内存缓冲object var $mem = null; // 会话 object var $sess ...

  10. oracle优化原则(二)

    SQL优化原则 二.SQL语句编写注意问题 www.2cto.com 下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍.在这些where子句中,即使某些列存在索引,但是由于编写了劣质 ...