首页 技术 正文
技术 2022年11月13日
0 收藏 990 点赞 4,820 浏览 2794 个字

摘要: CoreGraphics的功能非常强大,可以绘制各种图形;今天学习一下怎么绘制简单的点线面,记录学习。

一、导入coreGraphics.framework

二、绘制图形

1、绘制矩形

// 绘制矩形
- (void)drawRectangle { // 定义矩形的rect
CGRect rectangle = CGRectMake(, , , ); // 获取当前图形,视图推入堆栈的图形,相当于你所要绘制图形的图纸
CGContextRef ctx = UIGraphicsGetCurrentContext(); // 在当前路径下添加一个矩形路径
CGContextAddRect(ctx, rectangle); // 设置试图的当前填充色
CGContextSetFillColorWithColor(ctx, [UIColor blackColor].CGColor); // 绘制当前路径区域
CGContextFillPath(ctx);
}

2、绘制椭圆

// 绘制椭圆
- (void)drawEllipse { // 获取当前图形,视图推入堆栈的图形,相当于你所要绘制图形的图纸
CGContextRef ctx = UIGraphicsGetCurrentContext(); // 定义其rect
CGRect rectangle = CGRectMake(, , , ); // 在当前路径下添加一个椭圆路径
CGContextAddEllipseInRect(ctx, rectangle); // 设置当前视图填充色
CGContextSetFillColorWithColor(ctx, [UIColor orangeColor].CGColor); // 绘制当前路径区域
CGContextFillPath(ctx);
}

3、绘制三角形

// 绘制三角形
- (void)drawTriangle { // 获取当前图形,视图推入堆栈的图形,相当于你所要绘制图形的图纸
CGContextRef ctx = UIGraphicsGetCurrentContext(); // 创建一个新的空图形路径。
CGContextBeginPath(ctx); /**
* @brief 在指定点开始一个新的子路径 参数按顺序说明
*
* @param c 当前图形
* @param x 指定点的x坐标值
* @param y 指定点的y坐标值
*
*/
CGContextMoveToPoint(ctx, , ); /**
* @brief 在当前点追加直线段,参数说明与上面一样
*/
CGContextAddLineToPoint(ctx, , );
CGContextAddLineToPoint(ctx, , ); // 关闭并终止当前路径的子路径,并在当前点和子路径的起点之间追加一条线
CGContextClosePath(ctx); // 设置当前视图填充色
CGContextSetFillColorWithColor(ctx, [UIColor blackColor].CGColor); // 绘制当前路径区域
CGContextFillPath(ctx);
}

4、绘制曲线

// 绘制曲线
- (void)drawCurve { // 获取当前图形,视图推入堆栈的图形,相当于你所要绘制图形的图纸
CGContextRef ctx = UIGraphicsGetCurrentContext(); // 创建一个新的空图形路径。
CGContextBeginPath(ctx); /**
* @brief 在指定点开始一个新的子路径 参数按顺序说明
*
* @param c 当前图形
* @param x 指定点的x坐标值
* @param y 指定点的y坐标值
*
*/
CGContextMoveToPoint(ctx, , ); /**
* @brief 在指定点追加二次贝塞尔曲线,通过控制点和结束点指定曲线。
* 关于曲线的点的控制见下图说明,图片来源苹果官方网站。参数按顺序说明
* @param c 当前图形
* @param cpx 曲线控制点的x坐标
* @param cpy 曲线控制点的y坐标
* @param x 指定点的x坐标值
* @param y 指定点的y坐标值
*
*/
CGContextAddQuadCurveToPoint(ctx, , , , ); // 设置图形的线宽
CGContextSetLineWidth(ctx, ); // 设置图形描边颜色
CGContextSetStrokeColorWithColor(ctx, [UIColor brownColor].CGColor); // 根据当前路径,宽度及颜色绘制线
CGContextStrokePath(ctx);
}

曲线描绘示意图

ios Quartz 各种绘制图形用法

5、绘制圆形

//以指定中心点绘制圆弧
- (void)drawCircleAtX:(float)x Y:(float)y { // 获取当前图形,视图推入堆栈的图形,相当于你所要绘制图形的图纸
CGContextRef ctx = UIGraphicsGetCurrentContext(); // 创建一个新的空图形路径。
CGContextSetFillColorWithColor(ctx, [UIColor blackColor].CGColor); /**
* @brief 在当前路径添加圆弧 参数按顺序说明
*
* @param c 当前图形
* @param x 圆弧的中心点坐标x
* @param y 曲线控制点的y坐标
* @param radius 指定点的x坐标值
* @param startAngle 弧的起点与正X轴的夹角,
* @param endAngle 弧的终点与正X轴的夹角
* @param clockwise 指定1创建一个顺时针的圆弧,或是指定0创建一个逆时针圆弧
*
*/
CGContextAddArc(ctx, x, y, , , * M_PI, ); //绘制当前路径区域
CGContextFillPath(ctx);
}

6.画一条线

-(void)drawLine
{
CGContextRef context = UIGraphicsGetCurrentContext();
//画一条线
CGContextSetRGBStrokeColor(context, 0.5, 0.5, 0.5, 0.5);//线条颜色
CGContextMoveToPoint(context, , );
CGContextAddLineToPoint(context, ,);
CGContextStrokePath(context);
}

三、在drawRect中调用

- (void)drawRect:(CGRect)rect {    // 绘制椭圆
[self drawEllipse]; // 绘制三角
[self drawTriangle]; // 绘制矩形
[self drawRectangle]; // 绘制曲线
[self drawCurve]; // 绘制圆形
[self drawCircleAtX: Y:]; [self drawCircleAtX: Y:];}

效果如图:

ios Quartz 各种绘制图形用法

转:http://my.oschina.net/joanfen/blog/150411

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,565
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,413
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,186
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905