IOS(UI)_CGContextRef(绘画)

绘画

一般创建UIView时都要一个drawRect在下面被注释掉
现在把注释去掉

//覆盖drawRect方法,可以在此自定绘画 和 动画
- (void)drawRect:(CGRect)rect {
}
绘画
//覆盖drawRect方法,可以在此自定绘画 和 动画
- (void)drawRect:(CGRect)rect {

    //一个不透明的Quartz 2D绘画环境,相当于一个画布,可以在上面任意绘画
    CGContextRef context = UIGraphicsGetCurrentContext();

    //设置画笔粗细
    CGContextSetLineWidth(context, 1);
    //设置画笔的颜色
    CGContextSetRGBStrokeColor(context, 1, 1, 1, 1);
    //设置填充颜色
    CGContextSetRGBFillColor(context, 1, 0, 0, 1);

    //画圆
    CGContextAddArc(context, 100, 20, 15, 0, 2*M_PI, 0);
    //绘制路径
    CGContextDrawPath(context, kCGPathStroke);

    //填充圆,无边框
    CGContextAddArc(context, 150, 20, 15, 0, 2*M_PI, 1);
    //绘制路径
    /*
     <#CGPathDrawingMode mode#>
     kCGPathFill,   //填充非绕数规则
     kCGPathEOFill, //表示用奇偶规则
     kCGPathStroke, //路径
     kCGPathFillStroke, //路径填充
     kCGPathEOFillStroke    //表示描线
     */
    CGContextDrawPath(context, kCGPathFillStroke);

    //画线及弧线
    CGContextMoveToPoint(context, 100, 80); //移到开始坐标
    CGContextAddLineToPoint(context, 130, 80);
    CGContextDrawPath(context, kCGPathStroke);

    //画笑脸
    //左边
    CGContextMoveToPoint(context, 140, 80); //开始坐标p1
    CGContextAddArcToPoint(context, 148, 68, 156, 80, 10);
    CGContextStrokePath(context);

    //右边
    CGContextMoveToPoint(context, 160, 80);
    CGContextAddArcToPoint(context, 168, 68, 176, 80, 10);
    CGContextStrokePath(context);

    //画矩形
    CGContextStrokeRect(context, CGRectMake(100, 120, 10, 10));
    CGContextFillRect(context, CGRectMake(120, 120, 10, 10));

    //矩形并填充
    CGContextSetLineWidth(context, 2);
    CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor);  //设置填充颜色
    CGContextSetStrokeColorWithColor(context, [UIColor colorWithRed:34/255.0 green:199/255.0 blue:1 alpha:1].CGColor);  //线框颜色
    //画方框
    CGContextAddRect(context, CGRectMake(140, 120, 60, 30));
    CGContextDrawPath(context, kCGPathFillStroke);

    //画扇形
    //以10为半径围绕圆心指定角度扇形
    CGContextMoveToPoint(context, 160, 180);
    CGContextAddArc(context, 160, 180, 10, 0, M_PI/2, 1);
    CGContextClosePath(context);
    CGContextDrawPath(context, kCGPathFillStroke);

    //画椭圆
    CGContextAddEllipseInRect(context, CGRectMake(200, 180, 60, 15));
    CGContextDrawPath(context, kCGPathFillStroke);

    //画贝塞尔曲线
    //二次曲线
    CGContextMoveToPoint(context, 120, 300);
    CGContextAddQuadCurveToPoint(context, 190, 310, 120, 390);  //设置贝塞尔曲线的控制点坐标和终点坐标
    CGContextStrokePath(context);

    //三次曲线
    CGContextMoveToPoint(context, 200, 300);
    CGContextAddCurveToPoint(context, 250, 280, 250, 400, 280, 300);
    CGContextStrokePath(context);

    //图片
    UIImage *image = [UIImage imageNamed:@"xx1.jpg"];
    [image drawInRect:CGRectMake(60, 400, 200, 200)];

    //iOS7.0新加的API
    NSString *text = @"Rick";
    [text drawAtPoint:CGPointMake(100, 100) withAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:18],NSForegroundColorAttributeName:[UIColor whiteColor]}];


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值