您的位置:首页 > 移动开发 > IOS开发

Quartz2D IOS绘图 线 椭圆 矩形 贝塞尔曲线 弧

2015-12-07 00:00 591 查看
//
// ViewController.m
// Quartz2D
//
// Created by dc008 on 15/12/7.
// Copyright © 2015年 CXY. All rights reserved.
//

#import "ViewController.h"
#import "CuiXiaoYu.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
CuiXiaoYu *cxy = [[CuiXiaoYu alloc]initWithFrame:CGRectMake(0, 0, 375, 667)];
// cxy.backgroundColor =[UIColor redColor];
[self.view addSubview:cxy];

// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

//
// CuiXiaoYu.m
// Quartz2D
//
// Created by dc008 on 15/12/7.
// Copyright © 2015年 CXY. All rights reserved.
//

#import "CuiXiaoYu.h"

@implementation CuiXiaoYu

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code
}
*/

- (void)drawRect:(CGRect)rect{
NSLog(@"drawRect被调用了");
// [self drawLine];
CGContextRef ctx = UIGraphicsGetCurrentContext();
// [self drawRectWithContext:ctx];
// [self drawEllipse:ctx];
// [self drawArc:ctx];
// [self drawCurve:ctx];
[self drawOneCurve:ctx];
}
#pragma mark 绘制线
- (void)drawLine{
//1.获得图形上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextRef context = UIGraphicsGetCurrentContext();
//2.拼接图形(路径)
//画一条直线
//设置起始位置
CGContextMoveToPoint(ctx, 0, 0);

CGContextMoveToPoint(context, 10, 10);
//添加一条线段到点(100,100)
CGContextAddLineToPoint(ctx, 375/2.0, 667/2.0);
CGContextAddLineToPoint(ctx, 375, 0);

CGContextAddLineToPoint(context, 375, 667);
//设置直线的颜色(黄色)
// CGContextSetRGBStrokeColor (ctx, 0, 0 , 1 , 1 );
//set : 同时设置为空心和实心颜色
//stroke :设置空心颜色
//fill : 设置实心颜色
[[UIColor redColor]set];
//设置填充颜色

CGContextSetRGBFillColor(ctx, 0, 0, 1, 1);
CGContextSetRGBFillColor(context, 0, 0, 2, 2);
// [[UIColor yellowColor] set];

//渲染颜色到view
// CGContextFillPath(ctx);// 实心渲染
// CGContextStrokePath(ctx);// 空心渲染
//闭合路径 自动添加线来闭合图形
CGContextClosePath(ctx);
//设置直线的宽度
CGContextSetLineWidth(ctx, 10);
CGContextSetLineWidth(context, 10);
//设置直线开头的样式(圆)
CGContextSetLineCap(ctx, kCGLineCapRound);
//设置直线转折点的样式(圆)
CGContextSetLineJoin(ctx, kCGLineJoinRound);
//3.渲染显示到View上面
// CGContextFillPath(ctx); 实心渲染
// CGContextStrokePath(ctx);
CGContextDrawPath(ctx, kCGPathFillStroke);
CGContextDrawPath(context, kCGPathEOFillStroke);
}
#pragma mark 绘制矩形
- (void) drawRectWithContext : (CGContextRef)context{

//确定矩形图像的大小位置
CGRect rect = CGRectMake(20, 20, 335, 50);
CGContextAddRect(context, rect);
//设置矩形的属性
[[UIColor whiteColor]set];
//绘制
CGContextDrawPath(context, kCGPathFillStroke);
}

#pragma mark 绘制椭圆

- (void) drawEllipse : (CGContextRef)context {
CGRect rect = CGRectMake(100, 100, 200, 200);
CGContextAddEllipseInRect(context, rect);
//设置属性
[[UIColor grayColor]set];
//绘制
CGContextDrawPath(context, kCGPathFillStroke);
}

#pragma mark 绘制弧
- (void) drawArc : (CGContextRef)context {
/*
x:中心点x坐标
y:中心点y坐标
radius:半径
startAngle:起始弧度
endAngle:结束弧度
clockwise:是否逆时针绘制,0则顺时针绘制
*/
CGContextSetLineWidth(context, 20);
CGContextAddArc(context, 375/2.0, 667/2.0,100 , 0.0, M_PI_2, 1);
//设置属性
[[UIColor orangeColor]setStroke];
//绘制
CGContextDrawPath(context, kCGPathStroke);

}

#pragma mark 绘制贝塞尔曲线

- (void) drawCurve : (CGContextRef) context {

CGContextMoveToPoint(context, 20, 500);
/*
cp1x:第一个控制点x坐标
cp1y:第一个控制点y坐标
cp2x:第二个控制点x坐标
cp2y:第二个控制点y坐标
x:结束点x坐标
y:结束点y坐标
*/
CGContextAddCurveToPoint(context, 20, 300, 295, 500, 355, 300);
//设置曲线属性
[[UIColor yellowColor]setFill];
[[UIColor redColor]setStroke];
//绘制
CGContextDrawPath(context, kCGPathFillStroke);
//设置第一条线
CGContextMoveToPoint(context,20 , 500);
CGContextAddLineToPoint(context, 20, 300);
CGContextSetLineWidth(context, 5);
//设置第二条线
CGContextMoveToPoint(context, 355, 300);
CGContextAddLineToPoint(context, 295, 500);
CGContextSetLineWidth(context, 5);//设置边框宽度

CGContextDrawPath(context, kCGPathFillStroke);
}

#pragma mark 绘制一个控制点的贝塞尔曲线

-(void) drawOneCurve : (CGContextRef) context {
//移动到曲线起始位置
CGContextMoveToPoint(context, 20, 100);
CGContextAddQuadCurveToPoint(context, 187.5, 0, 355, 100);
[[UIColor redColor]setFill];
[[UIColor whiteColor]setStroke];
//绘制
CGContextDrawPath(context, kCGPathFillStroke);
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: