【iOS】Quartz2D基本图形

一、画线段

 1 - (void)drawRect:(CGRect)rect
 2 {
 3     // Drawing code
 4     // 1.获得图形上下文
 5     CGContextRef ctx = UIGraphicsGetCurrentContext();
 6
 7     // 2.拼接图形(路径)
 8     // 设置线段宽度
 9     CGContextSetLineWidth(ctx, 10);
10
11     // 设置线段头尾部的样式
12     CGContextSetLineCap(ctx, kCGLineCapRound);
13
14     // 设置线段转折点的样式
15     CGContextSetLineJoin(ctx, kCGLineJoinRound);
16
17
18     /**  第1根线段(红色) **/
19     // 设置颜色
20     CGContextSetRGBStrokeColor(ctx, 1, 0, 0, 1);
21     // 设置一个起点
22     CGContextMoveToPoint(ctx, 10, 10);
23     // 添加一条线段到(100, 100)
24     CGContextAddLineToPoint(ctx, 100, 100);
25
26     // 3.渲染显示到view上面(渲染一次)
27     CGContextStrokePath(ctx);
28
29     //------------------------
30
31     /**  第2根线段(蓝色)  **/
32     // 设置颜色
33     CGContextSetRGBStrokeColor(ctx, 0, 0, 1, 1);
34     // 设置一个起点
35     CGContextMoveToPoint(ctx, 200, 190);
36     // 添加一条线段到(150, 40)
37     CGContextAddLineToPoint(ctx, 150, 40);
38     CGContextAddLineToPoint(ctx, 120, 60);
39
40
41     // 3.渲染显示到view上面
42     CGContextStrokePath(ctx);
43 }

运行效果:

二、画四边形和三角形

画四边形和三角形,就是利用线段将其连接起来。代码如下:

/**
 *  画四边形
 */
void draw4Rect()
{
    // 1.获得上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    // 2.画矩形
    CGContextAddRect(ctx, CGRectMake(10, 10, 150, 100));

    // set : 同时设置为实心和空心颜色
    // setStroke : 设置空心颜色
    // setFill : 设置实心颜色
    [[UIColor whiteColor] set];

//    CGContextSetRGBFillColor(ctx, 0, 0, 1, 1);

    // 3.绘制图形
    CGContextFillPath(ctx);
}

/**
 *  画三角形
 */
void drawTriangle()
{
    // 1.获得上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    // 2.画三角形
    CGContextMoveToPoint(ctx, 0, 0);
    CGContextAddLineToPoint(ctx, 100, 100);
    CGContextAddLineToPoint(ctx, 150, 80);
    // 关闭路径(连接起点和最后一个点)
    CGContextClosePath(ctx);

    //
    CGContextSetRGBStrokeColor(ctx, 0, 1, 0, 1);

    // 3.绘制图形
    CGContextStrokePath(ctx);
}

运行效果:

              

三、画圆、圆弧、扇形

  圆:一个圆圈

圆弧:弧形,非封闭图形。

  扇形:比如四分之一圆,利用直线与圆弧组成。

 1 - (void)drawRect:(CGRect)rect
 2 {
 3     // 1.获得上下文
 4     CGContextRef ctx = UIGraphicsGetCurrentContext();
 5
 6     // 2.画1/4圆
 7     CGContextMoveToPoint(ctx, 100, 100);
 8     CGContextAddLineToPoint(ctx, 100, 150);
 9     CGContextAddArc(ctx, 100, 100, 50, -M_PI_2, M_PI, 1);
10     CGContextClosePath(ctx);
11
12     [[UIColor redColor] set];
13
14     // 3.显示所绘制的东西
15     CGContextFillPath(ctx);
16 }
17
18 /**
19  *  画圆弧
20  */
21 void drawArc()
22 {
23     // 1.获得上下文
24     CGContextRef ctx = UIGraphicsGetCurrentContext();
25
26     // 2.画圆弧
27     // x\y : 圆心
28     // radius : 半径
29     // startAngle : 开始角度
30     // endAngle : 结束角度
31     // clockwise : 圆弧的伸展方向(0:顺时针, 1:逆时针)
32     CGContextAddArc(ctx, 100, 100, 50, M_PI_2, M_PI, 0);
33
34
35     // 3.显示所绘制的东西
36     CGContextFillPath(ctx);
37 }
38
39 /**
40  *  画圆
41  */
42 void drawCircle()
43 {
44     // 1.获得上下文
45     CGContextRef ctx = UIGraphicsGetCurrentContext();
46
47     // 2.画圆
48     CGContextAddEllipseInRect(ctx, CGRectMake(50, 10, 100, 100));
49
50     CGContextSetLineWidth(ctx, 10);
51
52     // 3.显示所绘制的东西
53     CGContextStrokePath(ctx);
54 }

    

四、文字、图片

    就是将文文字与图片划到view上。

 1 void drawImage()
 2 {
 3     // 1.取得图片
 4     UIImage *image = [UIImage imageNamed:@"me"];
 5
 6     // 2.画
 7 //    [image drawAtPoint:CGPointMake(50, 50)];
 8 //    [image drawInRect:CGRectMake(0, 0, 150, 150)];
 9     [image drawAsPatternInRect:CGRectMake(0, 0, 200, 200)];
10
11     // 3.画文字
12     NSString *str = @"为xxx所画";
13     [str drawInRect:CGRectMake(0, 180, 100, 30) withAttributes:nil];
14 }
15
16 /**
17  *  画文字
18  */
19 void drawText()
20 {
21     // 1.获得上下文
22     CGContextRef ctx = UIGraphicsGetCurrentContext();
23     // 2.画矩形
24     CGRect cubeRect = CGRectMake(50, 50, 100, 100);
25     CGContextAddRect(ctx, cubeRect);
26     // 3.显示所绘制的东西
27     CGContextFillPath(ctx);
28
29
30
31     // 4.画文字
32     NSString *str = @"哈哈哈哈Good morning hello hi hi hi hi";
33     //    [str drawAtPoint:CGPointZero withAttributes:nil];
34
35     NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
36     // NSForegroundColorAttributeName : 文字颜色
37     // NSFontAttributeName : 字体
38     attrs[NSForegroundColorAttributeName] = [UIColor redColor];
39     attrs[NSFontAttributeName] = [UIFont systemFontOfSize:50];
40     [str drawInRect:cubeRect withAttributes:attrs];
41 }

运行效果:

         

时间: 2024-10-12 22:40:02

【iOS】Quartz2D基本图形的相关文章

iOS Quartz2D 渐变图形 CGGradient CGShading

最近在学习iOS Quartz2D二维图形绘制--->渐变效果 Quartz2D 渐变 Quartz提供了两个不透明数据odgago创建渐变: CGShadingRef 和 CGGradientRef 可以使用任何一种来创建轴向(axial)或径向(radial)渐变.一个渐变是从一个颜色到另一个颜色的填充 一个轴向渐变(也成为线性渐变) 不说废话直接上干货, 代码和注释还算全,不懂的自行百度吧 <span style="font-size:18px;">// Qua

iOS Quartz2D 透明层 TransparencyLayer

最近在研究iOS Quartz2D图形绘制引擎----->透明层TransparencyLayer 透明层 通过组合两个或多个对象来生成一个组合图形, 组合图形被看成是单一对象, 当需要在一组对象上使用特效的时候, 透明层非常有用 透明层的工作方式 Quartz2D的透明层类似很多流行的图形应用中的层, 层是独立的实体, Quartz维护为每个上下文维护一个透明栈, 并且透明层可以嵌套的, 但由于层通常是栈的一部分, 所以我们不能单独操作它们, 通过调用CGContextBeginTranspa

关东升的《iOS实战:图形图像、动画和多媒体卷(Swift版)》上市了

承蒙广大读者的厚爱我的<iOS实战:图形图像.动画和多媒体卷(Swift版)>京东上市了,欢迎广大读者提出宝贵意见..http://item.jd.com/11760249.html 欢迎关注关东升新浪微博@tony_关东升. 关注智捷课堂微信公共平台,了解最新技术文章.图书.教程信息 更多精品iOS.Cocos.移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.php

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

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

iOS Quartz2D画基本图形

1.线 // 1.获得图形上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 设置线宽 CGContextSetLineWidth(ctx, 5); // 设置颜色 CGContextSetRGBStrokeColor(ctx, 0, 0, 1, 1); // 设置头尾部样式 CGContextSetLineCap(ctx, kCGLineCapRound); // 设置转折点的样式 CGContextSetLineJoin(ctx,

Quartz2D--iOS下的图形绘制

一.基本介绍 Quartz 2D是一个二维绘图引擎,Quartz 2D的API是C语言,来自CoreGraphics框架,没有面向对象的思想. 1.作用:绘制图形:线条.三角形.矩形.圆.弧等 绘制文字 绘制.生成图片(图形) 读取.生成PDF 截图.裁剪图片 自定义UI控件 2.图形上下文(Graphics Context):是一个CGContextRef类型的数据 图形上下文的作用:1.保存绘图信息.绘图状态 2.决定绘制的输出目标(绘制到什么地方,输出目标可以是PDF文件.Bitmap或者

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

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

iOS Quartz2D画图

对于刚接触Quartz2D的同学来说,先了解 上下文 的概念,再从最基础的画线来具体体验Quartz2D的画图步骤 介绍Quart2D :是苹果官方的二维(平面)绘图引擎,同时支持iOS和macOS系统,它的API是纯C语言的,它可以绘制图形.绘制文字.绘制图片.截图.自定义UI控件 在iOS开发中,Quartz2D最常用来自定义UI控件. Quartz2D画图步骤: 1:获取图形上下文对象 2 向图形上下文对象中添加路径,绘图属性等等 3 渲染(把图形上下文中的路径绘制到对应的输出设备上) 介

IOS Quartz2D简介

Quartz2D 简介( 后续会有相关应用) 第一部分 绘制直线 代码示例: - (void)drawRect:(CGRect)rect{ //获取图形上下文 CGContextRef cxContext = UIGraphicsGetCurrentContext(); //开始画图 //设置直线起点 CGContextMoveToPoint(cxContext, 0, 20); //设置直线中点 CGContextAddLineToPoint(cxContext, 100, 20); //渲染