iOS中绘图的概念
iOS
iOS
openGL Quartz UIView DrawRect
1个像素 = 1/72英寸
基本图形的绘制
- 矩形
- (void) drawRect:(CGRect)rect{
//绘制矩形
//1获取图形上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
//2构建区域
CGContextAddRect(ctx, CGRectMake(10, 10, 100, 100));
//3颜色边框
CGContextSetRGBStrokeColor(ctx, 0, 1, 0.5, 1.0);
[[UIColor orangeColor]setStroke];
//4描边路径
CGContextStrokePath(ctx);
//4边框宽度
//5填充路径
CGContextSetLineWidth(ctx, 10);
//6绘制
CGContextDrawPath(ctx, kCGPathStroke);
}
- 三角形
- (void) drawTriangle{
//1.绘制图形上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 线宽
CGContextSetLineWidth(ctx, 10);
//2.构建三角形的位置
CGContextMoveToPoint(ctx, 100, 10);
//确定第一条线的结束为止
CGContextAddLineToPoint(ctx, 150, 70);
//第二条线
CGContextAddLineToPoint(ctx, 50, 70);
//第三条线
CGContextAddLineToPoint(ctx, 100, 10);
//3.关闭路径
CGContextClosePath(ctx);
[[UIColor blackColor]setStroke];
CGContextStrokePath(ctx);
//4. 渲染
//填充颜色
[[UIColor orangeColor]setFill];
CGContextFillPath(ctx);
}
- 绘制虚线
- (void) drawRect:(CGRect)rect{
//获取图形上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
//确定第一个点
CGContextMoveToPoint(ctx, 10, 10);
CGContextAddLineToPoint(ctx, 100, 100);
CGContextAddLineToPoint(ctx,10, 80);
// 设置宽度
CGContextSetLineWidth(ctx, 10);
//设置线终点的形状
CGContextSetLineCap(ctx, kCGLineCapSquare);
//连线的样式
//kCGLineJoinMiter 尖的 kCGLineJoinRound原角 kCGLineJoinBevel 平角
CGContextSetLineJoin(ctx, kCGLineJoinBevel);
CGContextSetStrokeColorWithColor(ctx, [UIColor orangeColor].CGColor);
CGContextStrokePath(ctx);
#pragma >>>>>>>>>>>>>>>>>>>>>>>>>>虚线
CGContextSaveGState(ctx);
//保存当前绘画的状态 与cgcontextrestoreGstate 即 绘制虚线必须先保存当前的绘画状态
//更新画板,更新上下文
CGContextRestoreGState(ctx);//绘制虚线
CGContextSetLineWidth(ctx, 5);
CGContextMoveToPoint(ctx, 30, 100);//开始点
CGFloat lenths[] = {10,20,10,40,10};//控制虚线每个小段长度的数组
//绘制虚线调用的方法
CGContextSetLineDash(ctx, 0, lenths, 3);
CGContextAddLineToPoint(ctx, 180, 180);//第一条
CGContextAddLineToPoint(ctx, 50, 300);//第二条
//设置绘制模式
CGContextDrawPath(ctx, kCGPathStroke);
}
- 圆或圆弧
- (void) drawRect:(CGRect)rect{
//1
CGContextRef ctx = UIGraphicsGetCurrentContext();
//2 构建路径
/**
*
x y 圆心
cadius 半径
startAngle 开始角度
stopAngle 结束角度
clockwise 时针方向 1逆 0顺
*/
//CGContextAddArc(<#CGContextRef _Nullable c#>, <#CGFloat x#>, <#CGFloat y#>, <#CGFloat radius#>, <#CGFloat startAngle#>, <#CGFloat endAngle#>, <#int clockwise#>)
CGContextAddArc(ctx, 100, 100, 50, M_PI_4, M_PI_2, 1);
//填充
[[UIColor redColor] setFill];
//填充路径
CGContextFillPath(ctx);
}
- 绘制字体
- (void) drawRect:(CGRect)rect{
NSString *str = @"WeekDiffculty";
//设置字体颜色 删除线
NSDictionary *dict = @{NSForegroundColorAttributeName:[UIColor redColor],NSStrikethroughStyleAttributeName:@1};
//指定区域绘制文本
[str drawInRect:CGRectMake(0, 19, 200, 300) withAttributes:dict];
[self drawRectImage:rect];
}
-
指定区域绘制图片
UIImage *iamge = [UIImage imageNamed:@"an"]; [iamge drawInRect:CGRectMake(0, 50, 50, 50)];
}
![绘制文字及图片](http://upload-images.jianshu.io/upload_images/2382884-e3e13e8887c893b7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)