首页 > 代码库 > CoreGraphics--画线/圆/矩形

CoreGraphics--画线/圆/矩形

- (void)drawRect:(CGRect)rect {

    // Drawing code

    NSLog(@"drawRect自动调用");

    //画图步骤

    

//获取上下文(/画笔/绘图环境)

    CGContextRef context = UIGraphicsGetCurrentContext();

    //设置画笔颜色

    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);

    //线条的宽度

    CGContextSetLineWidth(context, 4);

    

    //开始画

    //1.画一条直线

//    [self drawOneLineWith:context];

    

    //2-1.画多条线

//    [self drawManyLines:context];

    

    //2-2

//    [self drawManyLines2:context];

    

    //3画虚线

//    [self drawDashLine:context];

    

    //4 画矩形

//    [self drawRectShape:context];

    

    //5.填充的矩形

//    [self drawFillRect:context];

    

    //6 画椭圆

//    [self drawCircle:context];

    //7.填充的椭圆

//    [self drawFillCircle:context];

    

    //8 显示文字

//    [self drawText];

    

    //9.显示图片

    [self drawImage];

    

}

#pragma makr -- 9 显示图片

- (void)drawImage{

    

    [[UIImage imageNamed:@"收藏-128"] drawInRect:CGRectMake(0, 0, 100, 100)];

    

}

 

 

#pragma mark -- 8 显示文字

- (void)drawText{

    //起点(attribute 中设这参数)

    [@"aaabbbcccddd" drawAtPoint:CGPointMake(100, 100) withAttributes:NULL];

    //

    [@"asdfasdfaf" drawInRect:CGRectMake(100, 150, 200, 200) withAttributes:NULL];

    

    

}

 

#pragma mark -- 7 画填充的 椭圆

- (void)drawFillCircle:(CGContextRef)context{

    

    //填充的颜色

    [[UIColor redColor] setFill];

    CGContextFillEllipseInRect(context, CGRectMake(40, 40, 200, 300));

    

 

    

}

 

#pragma mark -- 6 画椭圆

- (void)drawCircle:(CGContextRef)context{

    

    CGContextStrokeEllipseInRect(context, CGRectMake(40, 40, 300, 200));

    

}

 

#pragma mark -- 5填充的矩形

- (void)drawFillRect:(CGContextRef)context{

    

    //设置填充颜色

    [[UIColor yellowColor] setFill];

    CGContextFillRect(context, CGRectMake(40, 40, 250, 300));

 

    

}

 

#pragma mark --4画矩形

- (void)drawRectShape:(CGContextRef)context{

    

    CGContextStrokeRect(context, CGRectMake(40, 40, 200, 300));

    

    //同理(stroke 画图方法; 也有add..方法 )

//    CGContextAddRect(context,  CGRectMake(40, 40, 200, 300));

//    CGContextStrokePath(context);

    

}

 

 

#pragma mark -- 3 画虚线

- (void)drawDashLine:(CGContextRef)context{

    

    //设置虚线类型

//    CGFloat lengths[] = {5,15,5}; //5 空隙15 5 ...

    CGFloat lengths[] = {5,5};

    CGContextSetLineDash(context, 0, lengths, sizeof(lengths)/sizeof(lengths[0]));

    

//    CGContextSetLineDash(<#CGContextRef c#>, <#CGFloat phase#>, <#const CGFloat *lengths#>, <#size_t count#>)

    //phase 开始点 跳过多少个点数(0代表从头画)

    //lengths 虚线的样式

    //count 长度

    

    //起点

    CGContextMoveToPoint(context, 50, 50);

    //画线

    CGContextAddLineToPoint(context, 200, 200);

    

    CGContextStrokePath(context);

    

//第二段设置成  直线 NULL

    CGContextSetLineDash(context, 0, NULL, 0);

    //需要重新设置起点

    CGContextMoveToPoint(context, 200, 200);

    

    CGContextAddLineToPoint(context, 250,400);

 

    CGContextStrokePath(context);

    

}

 

 

 

#pragma mark --画多条线 (方式二)

- (void)drawManyLines2:(CGContextRef)context{

    

    CGPoint point[] = {CGPointMake(50, 50),CGPointMake(100, 100),CGPointMake(100, 200)};

    //计算数组中元素个数

//    int count  = sizeof(数组名)/size(sizeof(a[0]));

    

                                //个数

    CGContextAddLines(context, point, sizeof(point)/sizeof(point[0]));

    //闭合

    CGContextClosePath(context);

    //开始画

    CGContextStrokePath(context);

    

    

}

 

 

 

#pragma mark --画多条线 (方式一)

- (void)drawManyLines:(CGContextRef)context{

   

    //例如:三角形

    CGContextMoveToPoint(context, 200, 100);

    

    CGContextAddLineToPoint(context, 100, 200);

    CGContextAddLineToPoint(context, 300, 200);

    //回到起点

//    CGContextAddLineToPoint(context, 200, 100);

    //按方法2 : 闭合(起点和终点连线)

    CGContextClosePath(context);

    

    CGContextStrokePath(context);

    

}

 

 

#pragma mark -- 1 画一条线

- (void)drawOneLineWith:(CGContextRef)context{

    //起点

    CGContextMoveToPoint(context, 50, 50);

    //终点:画线

    CGContextAddLineToPoint(context, 200, 200);

    //开始画

    CGContextStrokePath(context);

    

}

CoreGraphics--画线/圆/矩形