CoreGraphics.framework 是iOS 内置的用于画图的框架,可以画自定义的几何图形,它支持图形上下文、加载图像、绘制图像,等等。
下面是我今天练习的代码:
(1)代码1:绘制字符串
- (void)drawRect:(CGRect)rect
{
// Drawing code
UIColor * magentaColor = [UIColor colorWithRed:0.5f green:0.0f blue:0.5f alpha:1.0f];
[magentaColor set];
UIFont * helveticaBold = [UIFont fontWithName:@"HelveticaNeue-Bold" size:30.0f];
NSString * myString = @"I Learn Really Fast";
[myString drawAtPoint:CGPointMake(25, 190) withFont:helveticaBold];
}
(2)代码2:绘制图像
-(void)drawRect:(CGRect)rect
{
UIImage * image = [UIImage imageNamed:@"xcode.png"];
if(image != nil)
{
NSLog(@"Successfully loaded the image");
}
else
{
NSLog(@"Failed to load the image");
}
[image drawAtPoint:CGPointMake(0.0f, 20.0f)];
[image drawInRect:CGRectMake(50.0f, 10.0f, 40.0f,35.0f)];
}
(3)代码3:绘制线段
-(void)drawRect:(CGRect)rect
{
[[UIColor brownColor] set];
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(currentContext, 5.0f);
CGContextMoveToPoint(currentContext, 50.0f, 10.0f);
CGContextAddLineToPoint(currentContext, 100.0f, 200.0f);
CGContextStrokePath(currentContext);
}
(4)绘制两条相连的线段
-(void)drawRect:(CGRect)rect
{
[[UIColor brownColor] set];
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(currentContext, 5.0f);
CGContextMoveToPoint(currentContext, 20.0f, 20.0f);
CGContextAddLineToPoint(currentContext, 100.0f, 100.0f);
CGContextAddLineToPoint(currentContext, 300.0f, 100.0f);
CGContextStrokePath(currentContext);
}
(5)绘制屋顶demo
-(void)drawRect:(CGRect)rect
{
[self drawRooftopAtTopPointof:CGPointMake(160.0f, 40.0f) textToDisplay:@"Miter" lineJoin:kCGLineJoinMiter];
[self drawRooftopAtTopPointof:CGPointMake(160.0f, 180.0f) textToDisplay:@"Bevel" lineJoin:kCGLineJoinBevel];
[self drawRooftopAtTopPointof:CGPointMake(160.0f, 320.0f) textToDisplay:@"Round" lineJoin:kCGLineJoinRound];
}
-(void)drawRooftopAtTopPointof:(CGPoint)paramTopPoint textToDisplay:(NSString * )paramText lineJoin:(CGLineJoin)paramLineJoin
{
[[UIColor brownColor] set];
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSetLineJoin(currentContext,paramLineJoin);
CGContextSetLineWidth(currentContext, 20.0f);
CGContextMoveToPoint(currentContext, paramTopPoint.x - 140, paramTopPoint.y + 100);
CGContextAddLineToPoint(currentContext, paramTopPoint.x, paramTopPoint.y);
CGContextAddLineToPoint(currentContext, paramTopPoint.x + 140, paramTopPoint.y + 100);
CGContextStrokePath(currentContext);
[[UIColor blackColor] set];
[paramText drawAtPoint:CGPointMake(paramTopPoint.x - 40.0f, paramTopPoint.y + 60.0f) withFont:[UIFont boldSystemFontOfSize:30.0f]];
}
(6)绘制矩形
-(void)drawRect:(CGRect)rect
{
CGMutablePathRef path = CGPathCreateMutable();
CGRect rectangle = CGRectMake(10.0f, 10.0f, 200.0f, 300.0f);
CGPathAddRect(path, NULL, rectangle);
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextAddPath(currentContext, path);
[[UIColor colorWithRed:0.20f green:0.60f blue:0.80f alpha:1.0f] setFill];
[[UIColor brownColor] setStroke];
CGContextSetLineWidth(currentContext, 5.0f);
CGContextDrawPath(currentContext, kCGPathFillStroke);
CGPathRelease(path);
}
(7)同时绘制多个矩形
-(void)drawRect:(CGRect)rect
{
CGMutablePathRef path = CGPathCreateMutable();
CGRect rectangle1 = CGRectMake(10.0f, 10.0f, 200.0f, 300.0f);
CGRect rectangle2 = CGRectMake(40.0f, 100.0f, 90.0f, 300.0f);
CGRect rectangles[2] = {rectangle1,rectangle2};
CGPathAddRects(path, NULL, (const CGRect *)&rectangles, 2);
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextAddPath(currentContext, path);
[[UIColor colorWithRed:0.20f green:0.60f blue:0.80f alpha:1.0f] setFill];
[[UIColor blackColor] setStroke];
CGContextDrawPath(currentContext, kCGPathFillStroke);
CGPathRelease(path);
}
(8)给几何图形添加阴影
-(void)drawRectAtTopOfScreen
{
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGContextSaveGState(currentContext);
CGContextSetShadowWithColor(currentContext, CGSizeMake(10.0f, 10.0f), 20.0f, [[UIColor grayColor] CGColor]);
CGMutablePathRef path = CGPathCreateMutable();
CGRect firstRect = CGRectMake(55.0f, 60.0f, 150.0f, 150.0f);
CGPathAddRect(path, NULL, firstRect);
CGContextAddPath(currentContext, path);
[[UIColor colorWithRed:0.20f green:0.60f blue:0.80f alpha:1.0f] setFill];
CGContextDrawPath(currentContext, kCGPathFill);
CGPathRelease(path);
CGContextRestoreGState(currentContext);
}
-(void)drawRectAtBottomOfScreen
{
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGMutablePathRef path = CGPathCreateMutable();
CGRect secondRect = CGRectMake(150.0f, 250.0f, 100.0f, 100.0f);
CGPathAddRect(path, NULL
, secondRect);
CGContextAddPath(currentContext, path);
[[UIColor purpleColor] setFill];
CGContextDrawPath(currentContext, kCGPathFill);
CGPathRelease(path);
}
来源:oschina
链接:https://my.oschina.net/u/257703/blog/138641