记录一次Quartz2D学习(二)
(一)内主要就是讲了线条的绘制以及绘制状态的保存与恢复
本次就讲一些图形的画法
2 图形的绘制
2.1 三角形的绘制 :(就是绘制三条线)
- (void)drawRect:(CGRect)rect {
//获取绘制上下文
CGContextRef ctx =UIGraphicsGetCurrentContext();
//设置连接处的圆角
CGContextSetLineJoin(ctx, kCGLineJoinRound);
//设置颜色以及线条粗细
[[UIColor yellowColor] set];
CGContextSetLineWidth(ctx, 20);
//移动起始点
CGContextMoveToPoint(ctx, 50, 50);
//三条先的绘制
CGContextAddLineToPoint(ctx, 150, 150);
CGContextAddLineToPoint(ctx, 50, 200);
CGContextAddLineToPoint(ctx, 50, 50);
//绘制
CGContextStrokePath(ctx)}

2.2 长方形的绘制
TIP:这里设置线条的宽度 ,不会影响坐标,线宽会按照绘制的线条想上下或者左右进行绘制
- (void)drawRect:(CGRect)rect {
//获取绘制上下文
CGContextRef ctx =UIGraphicsGetCurrentContext();
//设置连接处的圆角
CGContextSetLineJoin(ctx, kCGLineJoinRound);
//设置颜色以及线条粗细
CGContextSetLineWidth(ctx, 20);
[[UIColor yellowColor] set];
//直接调用添加矩形方法
CGContextAddRect(ctx, CGRectMake(0, 0, 300, 250));
//使用下面这个方法创建一个实心的矩形
CGContextFillRect(ctx, CGRectMake(0,260, 300, 100));
//绘制---使用填充方法之后 可以不使用渲染方法
CGContextStrokePath(ctx);
}

实心矩形

2.3 绘制一个圆形
- (void)drawRect:(CGRect)rect {
//获取绘制上下文
CGContextRef ctx =UIGraphicsGetCurrentContext();
//设置连接处的圆角
CGContextSetLineJoin(ctx, kCGLineJoinRound);
//设置颜色以及线条粗细
CGContextSetLineWidth(ctx, 20);
[[UIColor yellowColor] set];
//使用下面方法绘制一个空心圆 一个PI只能绘制半圆 -- 弧形也可以通过这种方式来绘制
CGContextAddArc(ctx, 100, 100, 50, 0, M_PI*2, 0 );
//使用下面方法来绘制一个实心的圆或者椭圆
CGContextFillEllipseInRect(ctx, CGRectMake(100, 100, 100, 50));
//绘制---使用填充方法之后 可以不使用渲染方法
CGContextStrokePath(ctx);
}


2.4 绘制扇形
- (void)drawRect:(CGRect)rect {
//获取绘制上下文
CGContextRef ctx =UIGraphicsGetCurrentContext();
//设置颜色以及线条粗细
CGContextSetLineWidth(ctx, 20);
[[UIColor yellowColor] set];
//使用下面方法绘制一个空心圆 一个PI只能绘制半圆
CGContextAddArc(ctx, 100, 100, 50, 0, M_PI, 0 );
//使用下面方法来绘制一个封闭的扇形
CGContextClosePath(ctx);
//使用下面方法填充扇形
CGContextSetRGBFillColor(ctx, 255, 0, 0, 1);
//使用下面方法来封闭上面的扇形
CGContextFillPath(ctx);
//绘制---使用填充方法之后 可以不使用渲染方法
CGContextStrokePath(ctx);
}


2.5 填充一个四分之一圆
- (void)drawRect:(CGRect)rect {
//获取绘制上下文
CGContextRef ctx =UIGraphicsGetCurrentContext();
//设置颜色以及线条粗细
CGContextSetLineWidth(ctx, 20);
[[UIColor yellowColor] set];
//移动到初始点
CGContextMoveToPoint(ctx, 100, 200);
//添加线条
CGContextAddLineToPoint(ctx, 200, 200);
//添加线条
CGContextAddLineToPoint(ctx, 200, 300);
//添加圆弧
CGContextAddArc(ctx, 200, 200, 100, M_PI / 2, M_PI, 0);
//填充
CGContextFillPath(ctx);
}
记录一次Quartz2D学习(二)的更多相关文章
- 记录一次Quartz2D学习(六)
(五)内主要讲到了一些图层操作 本次主要讲 图片的裁剪 6图片裁剪 6.1 图片裁剪 TIP: 可能会影响统一图层的显示 - (void)drawRect:(CGRect)rect { CGConte ...
- 记录一次Quartz2D学习(三)
在(二)内,讲到了几何图形的绘制,这次就讲文本与图片的绘制 3 图片与文本 3.1 文本绘制 - (void)drawRect:(CGRect)rect { NSString * str = @&qu ...
- 记录一次Quartz2D学习(一)
经常看点 drawRect的重写 但是不知道这究竟是神马 今天开始学习这一块的东西,更确切地说是深入 早在view的时候 就经常会调用layer的maskToBounds属性,其实 重写 drawR ...
- 记录一次Quartz2D学习(七)
(六)内主要讲述了图片的裁剪 本次主要讲交互 7.交互 7.1 通过外部刷新内部的显示效果 初始化的时候设定好初始值,调用setNeedsDisplay方法来重新绘制 - (instancetype ...
- 记录一次Quartz2D学习(五)
(四)内主要讲了绘制状态的保存与恢复 本次主要讲述 缩放,旋转,平移等操作 5.附加操作 5.1 旋转 TIP: 旋转操作主要是对本次渲染的图层进行旋转,旋转的中心为左上角顶点 - (void)dra ...
- 记录一次Quartz2D学习(四)
(三)内主要讲了图片与文字的绘制 本次主要讲解 绘制状态的保存与恢复,以及对它的使用 4.绘制状态 4.1 绘制状态的保存与恢复,以及对它的应用 TIP:通过对保存恢复绘制状以及多次的渲染,可以绘制出 ...
- emberjs学习二(ember-data和localstorage_adapter)
emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...
- iOS学习——Quartz2D学习之UIKit绘制
iOS学习——Quartz2D学习之UIKit绘制 1.总述 在IOS中绘图技术主要包括:UIKit.Quartz 2D.Core Animation和OpenGL ES.其中Core Animati ...
- iOS学习——Quartz2D学习之DrawRect
Quartz2D学习之DrawRect 本文以问答形式主要讲述Quartz2D的相关内容,参考内容是网上下载的学习视频资料. 1.什么是Quartz2D? 他是一个二维的绘图引擎,同时支持iOS和Ma ...
随机推荐
- 谨慎使用Marker Interface
之所以写这篇文章,源自于组内的一些技术讨论.实际上,Effective Java的Item 37已经详细地讨论了Marker Interface.但是从整个Item的角度来看,其对于Marker In ...
- Linux 中的数值计算和符号计算
不知道经常需要做科学计算的朋友们有没有这样的好奇:在 Linux 系统下使用什么工具呢?说到科学计算,首先想到的肯定是 Matlab,如果再说到符号计算,那就非 Mathematica 不可了.可惜, ...
- 基于Adobe Flash平台的3D页游技术剖析
写在前面 从黑暗之光,佛本是道,大战神的有插件3D页游.再到如今的魔龙之戒. 足以证明,3D无插件正在引领页游技术的潮流. 目前,要做到3D引擎,有以下几个选择. 说到这里,我们发现.这些都不重要. ...
- C++ std::priority_queue
std::priority_queue template <class T, class Container = vector<T>, class Compare = less< ...
- 警告: [unchecked] 对作为原始类型IScheme的成员的write(TProt ocol,T)的调用未经过检查
jdk 从8 改成了7 就好了! 或者, 修改源码, 每个响应的地方加上 surppressingWarnings xxx , 或者使用 请使用 -Xlint:unchecked 重新编译. 参照 h ...
- CentOS 搭建openVPN
1.安装前准备 # 关闭selinux setenforce 0 sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config # 安装open ...
- Android Toolbar 开发总结
初识 Toolbar Toolbar是在 Android 5.0 开始推出的一个 Material Design 风格的导航控件 ,Google 非常推荐大家使用 Toolbar 来作为Android ...
- 【译】Unity3D Shader 新手教程(3/6) —— 更加真实的积雪
本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 如果你满足以下条件,我建议你阅读这篇教程: 你想知道如何在表面着色器中进行混色(blend colour) 你想实 ...
- fullpage.js全屏滚动插件使用小结
刚做好公司网站,通过全屏滚动,显著提高了官网的浏览体验.遂总结一下使用fullpage.js的方法.欢迎指正 一. fullpage.js简介 fullpage.js是一套实现浏览器全屏滚动的js插件 ...
- Yii2的深入学习--行为Behavior
我们先来看下行为在 Yii2 中的使用,如下内容摘自 Yii2中文文档 行为是 [[yii\base\Behavior]] 或其子类的实例.行为,也称为 mixins,可以无须改变类继承关系即可增强一 ...