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. ACM比赛经验

    这篇博客是转别人的,觉得很好,希望能在以后的现场赛中用上:ACM比赛经验 推荐此篇文章打印,与模板放在一起. 1. 比赛中评测会有些慢,偶尔还会碰到隔10分钟以上才返回结果的情况,这段时间不能等结果, ...

  2. Eclipse插件Target Management (RSE)

    陶醉篇--Eclipse插件Target Management (RSE),RSE即Remote System Explorer 2008年11月29日 星期六 下午 10:27 Target Man ...

  3. OpenGL的glPushMatrix和glPopMatrix矩阵栈顶操作函数详解

    OpenGL中图形绘制后,往往需要一系列的变换来达到用户的目的,而这种变换实现的原理是又通过矩阵进行操作的.opengl中的变换一般包括视图变换.模型变换.投影变换等,在每次变换后,opengl将会呈 ...

  4. jsonp跨域原理

    Jsonp原理: 首先在客户端注册一个callback (如:'jsoncallback'), 然后把callback的名字(如:jsonp1236827957501)传给服务器.注意:服务端得到ca ...

  5. 20145218 《Java程序设计》第9周学习总结

    20145218 <Java程序设计>第9周学习总结 教材学习内容总结 16.1.1 JDBC简介 JDBC全名Java DataBase Connectivity,是java联机数据库的 ...

  6. Android利用V4包中的SwipeRefreshLayout实现上拉加载

    基本原理 上拉加载或者说滚动到底部时自动加载,都是通过判断是否滚动到了ListView或者其他View的底部,然后触发相应的操作,这里我们以 ListView来说明.因此我们需要在监听ListView ...

  7. Pictures of Ascii Art

    简述 指尖上的艺术 - 通过键盘上韵律般的敲敲打打,一幅幅美轮美奂的艺术作品便跃然于屏. 这样的画作,包含了无穷的创意,糅合了现代计算机科技与传统绘画艺术,难道还有比这更令人陶醉的美妙事物吗? 简述 ...

  8. (05)odoo数据库和业务操作

    以一个例子开头* To-do 向导   # 配置文件       __openerp_.py:         { 'name': 'To-do Tasks Management Assistant' ...

  9. Java常用集合类详解

    在Java中有一套设计优良的接口和类组成了Java集合框架,使程序员操作成批的数据或对象元素极为方便.所有的Java集合都在java.util包中. 在编写程序的过程中,使用到集合类,要根据不同的需求 ...

  10. PHP中的CURL函数库

    PHP中的CURL函数库(Client URL Library Function) curl_close — 关闭一个curl会话curl_copy_handle — 拷贝一个curl连接资源的所有内 ...