IOS-Core Graphic 画图
*重新定义UIView 并在drawRect:(CGRect) rect;中绘制
1.绘制路径
_context=UIGraphicsGetCurrentContext(); CGMutablePathRef path=CGPathCreateMutable(); CGPathMoveToPoint(path, NULL, 50, 50); CGPathAddLineToPoint(path, NULL, 150, 150); CGPathAddLineToPoint(path, NULL, 50, 150); CGPathCloseSubpath(path); CGContextAddPath(_context, path); CGFloat myColor[4]={1.0f,1.0f,0,1.0f}; CGContextSetFillColor(_context,myColor); CGContextSetStrokeColor(_context, myColor); CGContextSetShouldAntialias(_context, NO); CGContextSetLineWidth(_context, 15.0); CGContextSetLineJoin(_context, kCGLineJoinRound); CGContextDrawPath(_context, kCGPathStroke); CGPathRelease(path); CGContextRelease(_context);
2.绘制矩形
CGRect rect2=CGRectMake(0, 0, 200, 200); CGContextSetStrokeColorWithColor(_context, [UIColor redColor].CGColor); CGContextSetLineWidth(_context, 2.0); CGContextStrokeRect(_context, rect2);
3.绘制渐变
_context=UIGraphicsGetCurrentContext(); //颜色模式 CGColorSpaceRef colorSpace=CGColorSpaceCreateDeviceRGB(); //构建颜色值 NSArray *colors=@[(__bridge id)[UIColor redColor].CGColor,(__bridge id)[UIColor greenColor].CGColor]; //颜色点的位置 CGFloat location[2]={0,1}; //设置渐变模式 CGGradientRef gradient=CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)colors,location); CGContextSaveGState(_context); CGRect rect2=CGRectMake(0, 0, 150, 150); //绘制区域 CGContextAddRect(_context, rect2); //区域裁剪 CGContextClip(_context); //裁剪位置 CGContextDrawLinearGradient(_context, gradient, CGPointMake(0, 0), CGPointMake(150, 150),kCGGradientDrawsAfterEndLocation); CGContextRestoreGState(_context); //释放资源 CGColorSpaceRelease(colorSpace); CGGradientRelease(gradient); CGContextRelease(_context);
4.绘制文字
</pre><pre name="code" class="objc">NSString *str=[UIFont fontWithName:@"Gill Sans" size:30]; NSString *drawText=@"hello !"; [drawText drawAtPoint:CGPointMake(30, 100) withFont:str];
5.绘制图片
UIImage *image=[UIImage imageNamed:@"头像2.png"]; [image drawAtPoint:CGPointMake(30, 30)]; CGImageRelease([image CGImage]);
6.贝塞尔曲线绘制
//绘制线 UIBezierPath *path=[UIBezierPath bezierPath]; [path moveToPoint:CGPointMake(30, 30)]; [path addLineToPoint:CGPointMake(30, 120)]; [path addLineToPoint:CGPointMake(120, 120)]; [path closePath]; //绘制圆 UIBezierPath *path=[UIBezierPath bezierPathWithArcCenter:CGPointMake(100, 100) radius:100.0 startAngle:0 endAngle:180 clockwise:YES]; //绘制矩形 UIBezierPath *path=[UIBezierPath bezierPathWithRect:CGRectMake(20, 20, 150, 150)]; //绘制椭圆 UIBezierPath *path=[UIBezierPath bezierPathWithOvalInRect:CGRectMake(10, 10, 120, 60)]; //设置颜色 [[UIColor redColor]set]; path.lineWidth=5; [path fill]; [[UIColor yellowColor]set]; [path stroke];
7.保存绘制环境,在绘制过程中 属性可能需要保存到栈中 这时候调用CGContextSaveGState进行保存,
并在需要的时候通过CGContextRestoreGState进行恢复。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。