iOS高级-QuartzCore框架-2D绘图

一、理论知识




二、画线段
1.新建一个类MJLineView,拖一个UIView,Class为MJLineView
2.在drawRect:方法里画图

-(void)drawRect:(CGRect)rect
{
//1.获得图形上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();

//2.拼接图形(路径)
//设置一个起点(之所以在参数中传上下文是为了把点存到上下文中)
CGContextMoveToPoint(ctx,10,10);
//添加一条线段到点(100,100)
CGContextAddLineToPoint(ctx,100,100);
//再添加一条线段[会从(100,100)继续画]
CGContextAddLineToPoint(ctx,150,40);
//3.显示所绘制的东西
CGContextStrokePath(ctx);//空心
// CGContextFillPath(ctx); //实心
}

三、画形状(三角形,矩形等)
1.新建一个类MJShapeView,拖一个UIView,Class为MJShapeView
2.在drawRect:方法里画图

-(void)drawRect:(CGRect)rect
{
   draw4Rect();
}
//画四边形(缺点:只能画水平的四边形,不能画斜的)
void draw4Rect()
{
//1.获得上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();

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

//3.显示所绘制的东西
CGContextStrokePath(ctx);
}
//画三角形
void drawTriangle()
{
//1.获得上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();

//2.画三角形
CGContextMoveToPoint(ctx,0,0);
CGContextAddLineToPoint(ctx,100,100);
CGContextAddLineToPoint(ctx,150,80);

//关闭路径(连接起点和最后一个点)
CGContextClosePath(ctx);
//3.显示所绘制的东西
CGContextStrokePath(ctx);
}

四、画圆和圆弧
二、画线段
1.新建一个类MJCircleView,拖一个UIView,Class为MJCircleView
2.在drawRect:方法里画图

//在view第一次显示到屏幕上的时候会调用一次
-(void)drawRect:(CGRect)rect
{

}

//画圆/椭圆
void drawCircle()
{
//1.获得上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();

//2.画椭圆(如果都相等则为圆)
CGContextAddEllipseInRect(ctx,CGRectMake(50,10100,50));

//CGContextSetLineWidth(ctx,10); //如果设置这个,就变成了圆环

//3.显示所绘制的东西
CGContextStrokePath(ctx);
}

//画圆弧
void drawArc()
{
//1.获得上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();

//2.画圆弧
//CGContextAddArc(ctx,圆心的x,圆心的y,半径,开始角度,结束角度, 
顺时针0或逆时针1);
CGContextAddArc(ctx,100100500,M_PI,1);

//3.显示所绘制的东西
CGContextStrokePath(ctx);
}

五、画文字和图片
1.新建一个类MJTextImageView,拖一个View,Class设置为MJTextImageView
2.实现drawRect:方法

-(void)drawRect:(CGRect)rect
{

   drawText();
}
//画文字(用OC方法画文字不需要上下文,已经封装好了)
void drawText()
{
//1.画文字
NSString *str = @"哈哈哈哈Good morning hello"//设置字体颜色
NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
attrs[NSForegroundColorAttributeName] = [UIColor redColor];
[str drawInRect:CGRectMake(50,50,100,100) withAttributes:nil];
//2.显示所绘制的东西
CGContextStrokePath(ctx);
}
//画图片(用OC方法画图片不需要上下文,已经封装好了)
void drawText()
{
//1.取得图片
UIImage *iamge = [UIImage imageNamed:@"me"];
//2.画
[image drawInRect:CGRectMake(50,50,100,100)];//会填充整个rect
PS:drawAsPatternInRect:方法可以画格子花纹
//3.显示所绘制的东西
CGContextStrokePath(ctx);
}
原文地址:https://www.cnblogs.com/marshall-yin/p/4745720.html