UI进阶--Quartz2D绘制图形的基本使用

1、绘制线条:

1.1、在storyboard中拖拉一个view,并设置大小;

1.2、自定义一个类,继承自UIView,并与1.1中的view进行关联;

1.3、- (void)drawRect:(CGRect)rect方法中实现画线条:

 1 //
 2 //  LineView.m
 3 //  Drawing
 4 //
 5 //  Created by xiaomoge on 14/12/30.
 6 //  Copyright (c) 2014年 xiaomoge. All rights reserved.
 7 //
 8
 9 #import "LineView.h"
10
11 @implementation LineView
12
13 - (void)drawRect:(CGRect)rect {
14
15     //获取上下文 上下文的输出目标就是self
16     CGContextRef context = UIGraphicsGetCurrentContext();
17
18     // 设置线颜色
19     CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1);
20
21     // 设置线宽
22     CGContextSetLineWidth(context, 13);
23
24     // 设置线的头尾的样式
25     CGContextSetLineCap(context, kCGLineCapButt);
26
27     // 设置连接点的样式
28     CGContextSetLineJoin(context, kCGLineJoinRound);
29
30     //画一条线
31     //设置一起点
32     CGContextMoveToPoint(context, 10, 10);
33     //设置连线另一个点
34     CGContextAddLineToPoint(context, 30, 100);
35     CGContextAddLineToPoint(context, 110, 110);
36
37     //渲染
38     CGContextStrokePath(context);
39 }
40 @end

效果图:

2、绘制三角形、矩形:

基本步骤和1一样:

代码:

//
//  LineView.m
//  Triangle
//
//  Created by xiaomoge on 14/12/30.
//  Copyright (c) 2014年 xiaomoge. All rights reserved.
//

#import "LineView.h"

@implementation LineView
- (void)drawRect:(CGRect)rect {
    [self drawTriangle];
    [self drawRectangle];
}
#pragma mark - 画三角形
-(void)drawTriangle{
    //获取上下文 上下文的输出目标就是self
    CGContextRef context = UIGraphicsGetCurrentContext();

    // 设置线颜色
    CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1);//RGB颜色
    //设置起点
    CGContextMoveToPoint(context, 10, 10);
    //设置另外三个点
    CGContextAddLineToPoint(context, 110, 10);
    CGContextAddLineToPoint(context, 110, 110);
    //CGContextAddLineToPoint(context, 10, 10);
    //关闭路径
    CGContextClosePath(context);

    // 渲染
    CGContextStrokePath(context);
}
#pragma mark -  画矩形
-(void)drawRectangle{
    //获取上下文 上下文的输出目标就是self
    CGContextRef context = UIGraphicsGetCurrentContext();

    // 设置线颜色
    CGContextSetRGBStrokeColor(context, 1.0, 1.0, 0.0, 1);

    // 设置线宽
    //CGContextSetLineWidth(context, 13);

    // =======第一方法============
    //    //设置一起点
    //    CGContextMoveToPoint(context, 70, 10);
    //    //设置另外三个点
    //
    //    CGContextAddLineToPoint(context, 110, 10);
    //    CGContextAddLineToPoint(context, 110, 110);
    //    CGContextAddLineToPoint(context, 10, 110);
    //    CGContextAddLineToPoint(context, 10, 10);

    // =======第二种方法============
    CGContextAddRect(context, CGRectMake(70, 10, 100, 100));

    //[渲染]
    //空心效果
    CGContextStrokePath(context);

    //实心效果
    //CGContextFillPath(context);
}

@end

效果图:

3、绘制圆、弧、扇形:

基本步骤和1一样:

代码:

 1 //
 2 //  Circle.m
 3 //  Circle
 4 //
 5 //  Created by xiaomoge on 14/12/30.
 6 //  Copyright (c) 2014年 xiaomoge. All rights reserved.
 7 //
 8
 9 #import "LineView.h"
10
11 @implementation LineView
12
13 - (void)drawRect:(CGRect)rect {
14     // Drawing code
15     [self drawSector];
16     [self drawArc];
17     [self drawCircle];
18 }
19
20 #pragma mark 画弧
21 -(void)drawArc{
22     //图形上下文
23     CGContextRef context = UIGraphicsGetCurrentContext();
24     /**
25      *CGContextAddArc(CGContextRef c, CGFloat x, CGFloat y,
26      CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise)
27      *x,y 圆心
28      *radius 半径
29      *startAngle 画弧的起始位置
30      *endAngel 画弧的结束位置
31      * clockwise 0 顺针 1 逆时针
32      */
33     CGContextAddArc(context, 120, 150, 60, 0, M_PI, 1);
34     //关闭路径
35     CGContextClosePath(context);
36
37     //渲染
38     CGContextStrokePath(context);
39     //CGContextFillPath(context);
40 }
41
42 #pragma mark - 画扇形
43 -(void)drawSector{
44     //图形上下文
45     CGContextRef context = UIGraphicsGetCurrentContext();
46
47     //设置一个起点
48     CGContextMoveToPoint(context, 100, 100);
49
50     CGContextAddArc(context, 100, 100, 60, - M_PI_4, - 3 * M_PI_4, 1);
51
52     CGContextClosePath(context);
53
54     CGContextStrokePath(context);
55 }
56
57 #pragma mark 画圆
58 -(void)drawCircle{
59     //图形上下文
60     CGContextRef context = UIGraphicsGetCurrentContext();
61
62     //画圈
63     CGContextAddEllipseInRect(context, CGRectMake(10, 10, 100, 100));
64
65     //渲染
66     CGContextStrokePath(context);
67 }
68 @end

效果图:

时间: 2024-10-02 20:35:40

UI进阶--Quartz2D绘制图形的基本使用的相关文章

UI进阶--Quartz2D简单介绍

1.Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统的API是纯C语言的,API来自于Core Graphics框架,数据类型和函数基本都以CG作为前缀,如: CGContextRef CGPathRef CGContextStrokePath(ctx); …… 2.Quartz2D可以做的工作: 绘制图形 : 线条\三角形\矩形\圆\弧\扇形等; 绘制文字; 绘制\生成图片(图像); 读取\生成PDF; 截图\裁剪图片; 自定义UI控件; ...... 3.Quartz2D在i

UI进阶--Quartz2D和触摸事件的简单使用:手势解锁

需求:实现一个简易的手势解锁应用,具体效果如下图所示: 实现步骤: 1.代码创建界面,自定义一个view,设置view的背景,颜色等属性: 2.在自定义的view中,定义2个属性,一个是存储被选中按钮的可变数组,另外一个是最后的触摸点(CGPoint); 3.重写initWithFrame方法,在这里,自定义一个方法给initWithFrame方法调用即可,这个自定义的方法里,初始化9个按钮,设置每个按钮的tag,正常状态下的图片以及选中状态的图片,并设置和用户的交互为NO: 4.在自定义的vi

UI进阶--Quartz2D和触摸事件的简单使用:简易涂鸦板

需求:实现一个简易的涂鸦板应用,使用鼠标在涂鸦板内拖动即可进行涂鸦,点击保存按钮,可以把完成的涂鸦保存,点击回退按钮可以向后退回一步,点击清空可以让涂鸦板清空. 实现步骤: 1.布局storyboard,连线各按钮以及涂鸦板: 2.监听触摸事件,主要为touchesBegan:和touchesMoved:; 3.获取移动的路径并添加到 UIBezierPath 对象: 4.渲染: 示例文件结构: 具体实现代码: 1 // 2 // Scrawl.h 3 // 1-04-Scrawl 4 // 5

iOS开发UI之Quartz2D使用(绘制基本图形)

iOS开发UI篇—Quartz2D使用(绘制基本图形) 一.简单说明 图形上下文(Graphics Context):是一个CGContextRef类型的数据 图形上下文的作用:保存绘图信息.绘图状态 决定绘制的输出目标(绘制到什么地方去?)(输出目标可以是PDF文件.Bitmap或者显示器的窗口上) 相同的一套绘图序列,指定不同的Graphics Context,就可将相同的图像绘制到不同的目标上. Quartz2D提供了以下几种类型的Graphics Context: Bitmap Grap

Quartz2D常见图形的绘制:线条、多边形、圆

UI高级 Quartz2D http://ios.itcast.cn  iOS学院 掌握 drawRect:方法的使用 常见图形的绘制:线条.多边形.圆 绘图状态的设置:文字颜色.线宽等 图形上下文状态的保存与恢复(图形上下文栈) 图片裁剪 截图 什么是Quartz2D Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作 Ø绘制图形 : 线条\三角形\矩形\圆\弧等 Ø绘制文字 Ø绘制\生成图片(图像) Ø读取\生成PDF Ø截图\裁剪图片 Ø自定义

iOS开发UI篇—Quartz2D使用(图形上下文栈)

iOS开发UI篇-Quartz2D使用(图形上下文栈) 一.qurza2d是怎么将绘图信息和绘图的属性绘制到图形上下文中去的? 说明: 新建一个项目,自定义一个view类和storyboard关联后,重写该类中的drowrect方法. 画线的三个步骤: (1)获取上下文 (2)绘图 (3)渲染 要求:画两条单独的线 代码和效果图: 1 - (void)drawRect:(CGRect)rect 2 { 3 //获取上下文 4 CGContextRef ctx=UIGraphicsGetCurre

IOS开发——UI进阶篇(十五)Quartz2D介绍

一.Quartz2D简介 1.什么是Quartz2DQuartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作绘制图形 : 线条\三角形\矩形\圆\弧等绘制文字绘制\生成图片(图像)读取\生成PDF截图\裁剪图片自定义UI控件 2.Quartz2D实例Quartz 2D能做很多强大的事情,例如 裁剪图片 涂鸦\画板 手势解锁 报表:折线图\饼状图\柱状图 二.自定义view 1.Quartz2D在iOS开发中的价值为了便于搭建美观的UI界面,iOS提供了UI

iOS边练边学--(Quartz2D)基本图形的绘制#附加自定义进度控件的练习

一.Quartz2D使用须知 Quartz2D的API是纯C语言的 Quartz2D的API来自于Core Graphics框架 二.<1>通过原始的方法(C语言)绘制简单图形--了解 <2>OC也封装了绘制图形的框架UIKit(贝瑟尔路径)--掌握 三.自定义进度控件的练习,效果图

iOS开发UI篇——Core Animation核心动画CAShapeLayer(绘制图形等)简介

重点: 获取绘制图形        Layer CAShapeLayer *shapeLayer = [CAShapeLayer layer];     设置图形有线颜色   [CAShapeLayer layer].strokeColor = [UIColor redColor].CGColor;      设置图形填充颜色   [CAShapeLayer layer].fillColor = [UIColor clearColor].CGColor;   设置图形线宽      [CASha