Quartz2D
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的更多相关文章
- Quartz2D总结
天了噜,脑子完全懵了,最起码说出来个上下文啊,连这个都给忘了,特此总结一下,并以此缅怀这次面试 Quartz2D的API来自于Core Graphics(这就是为什么CGContextRef是以CG开 ...
- 【原】iOS学习之Quartz2D(1)
什么是Quartz2D 1.Quartz 2D 是一个二维绘图引擎,同时支持iOS和Mac系统 2.Quartz 2D 能完成的工作: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成 ...
- Quartz2D 编程指南(三)渐变、透明层 、数据管理
概览 图形上下文 路径 颜色与颜色空间 变换 图案 阴影 渐变 透明层 Quartz 2D 中的数据管理 位图与图像遮罩 CoreGraphics 绘制 Layer 渐变 简介 渐变是从一个颜色到另外 ...
- Quartz2D 编程指南(一)概览、图形上下文、路径、颜色与颜色空间
概览 图形上下文 路径 颜色与颜色空间 变换 图案 阴影 渐变 透明层 Quartz 2D 中的数据管理 位图与图像遮罩 CoreGraphics 绘制 Layer 0.说明 本篇博客主要是对官方文档 ...
- Quartz2D之绘制一个简单的机器猫
学习iOS有一段时间了,在博客园也默默的潜水了两个月,见识了很多大神,收获不少. 今天整理笔记,发现忘记的不少,我感觉需要及时的整理一下了,同时也把做的小东西贴上来和大家分享一下. 最近学习了Quar ...
- Quartz2D 画大白
今天初始Quartz2D,我好激动啊,也好开心,莫名的会喜欢带有图形相关的课程…… 好啦,闲话少说,今天用Quartz2D方法画了最最爱的大白.迫不及待的想要和大家分享. 1.首先实例化了view 2 ...
- Quartz2D复习(一)--- 基础知识 / 绘制线段圆弧 / 图片水印 / 截图
1.Quartz 2D是一个二维绘图引擎,同时支持ios和Mac系统: Quart2D的API是纯C语言的,API来自于Core Graphics框架: 2.Quartz 2D可以绘制图形(线段/三 ...
- Quartz-2D
Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境.我们可以使用Quartz 2D API来实现许多功能,如基本路径的绘制.透明度.描影.绘制阴影.透明层.颜色管理.反锯齿 ...
- iOS开发——UI进阶篇(十五)Quartz2D介绍
一.Quartz2D简介 1.什么是Quartz2DQuartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作绘制图形 : 线条\三角形\矩形\圆\弧等绘制文字绘 ...
- iOS开发UI篇—Quartz2D使用(绘制基本图形)
iOS开发UI篇—Quartz2D使用(绘制基本图形) 一.简单说明 图形上下文(Graphics Context):是一个CGContextRef类型的数据 图形上下文的作用:保存绘图信息.绘图状态 ...
随机推荐
- 转载---jboss简单使用
初学Jboss,对于Jboss的基础认识以及配置做一些记录 Jboss基础: JBoss是什么–基于J2EE的应用服务器–开放源代码–JBoss核心服务不包括支持servlet/JSP的WEB容器,一 ...
- Winform_播放声音文件
1.调用非托管的dll using System.Runtime.InteropServices; //DllImport命名空间的引用 class test //提示音 { [DllImport ...
- hiho_1139_二分+bfs搜索
题目 给定N个点和M条边,从点1出发,到达点T.寻找路径上边的个数小于等于K的路径,求出所有满足条件的路径中最长边长度的最小值. 题目链接:二分 最小化最大值,考虑采用二分搜索.对所有的边长进 ...
- Python核心编程-闭包
百度搜了一下闭包的概念:简而言之,闭包的作用就是在外部函数执行完并返回后,闭包使得收机制不会收回函数所占用的资源,因为内部函数的执行需要依赖外函数中的变量.这是对闭包作用的非常直白的描述,不专业也不严 ...
- ScrollVIew 边界阴影效果
一.删除android ScrollView边界阴影方法方法 1) 在xml中添加:android:fadingEdge=”none” 2) 代码中添加:ScrollView.setHorizonta ...
- 联想G480笔记本安装系统
联想G480笔记本安装系统 联想G480笔记本,配置i5双核四线程处理器,4G内存,500G硬盘,USB3.0接口,NVIDIA GeForce GT 610M+Intel HD Graphics 3 ...
- unity入门笔记
我于2010年4月1日硕士毕业加入完美时空, 至今5年整.刚刚从一家公司的微端(就是端游技术+页游思想, 具体点就是c++开发, directX渲染, 资源采取所需才会下载)项目的前端主程职位离职, ...
- jq文本框显示最多可以输入多少字
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 增强Web可用性,你需要避免的七大设计错误
Web设计给了你展示自我创新才能的平台,同时也要求你特别关注其中的诸多琐碎细节.优秀的Web设计师需要从设计前辈那里获得设计灵感,寻求他们给的建议,并反复推敲,以及付出诸多努力.职业博客作者Rajni ...
- Populating Next Right Pointers in Each Node [LeetCode]
Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...