美文网首页
绘制方法

绘制方法

作者: 志在交流 | 来源:发表于2018-07-08 14:51 被阅读0次

    //drawRect:(CGRect)rect 是系统提供进行自定义绘图的   rect画布的大小,一般是view的bounds

    //自定义绘制分为三步

    1.获得画布  2.画布上添加图形  3.描绘图形(填充,描边)

    填充:CGContextFillPath(context); 

    描边:CGContextStrokePath(context);

    //上下文,可以理解为画布,承载所有我们自定义绘制的内容

    UIContextRef context = UIGraphicsGetCurrentContext;

    设置填充的颜色

    CGContextSexFillColorWithColor(context, [[UIColorblueColor]CGColor]);

    设置描边的颜色

    CGContextSetStrokeColorWithColor(context, [[UIColorredColor]CGColor]);

    设置线条的宽度

    CGContextSetLineWidth(context,5.0f);

    画矩形

    CGContextAddRect(context,CGRectMake(10, 20, 100, 200))

    //画椭圆

    CGContextAddEllipseInRect(context,CGRectMake(130,20,100,200));

     //x,y,radius 圆心坐标和半径。

        //弧线在圆上的度数。

        //clockwise,0,顺时针画,1,逆时针画。

        CGContextAddArc(context,100,350,100,0,M_PI_2,1);画直线 x,y线段的终点坐标.线段的起点就是上次绘制的终点CGContextMoveToPoint(context,300,100);

    CGContextAddLineToPoint(context,300,400);

    //写一段文字。

        NSString* text = @"这是一段很长很长的文字";    [textdrawAtPoint:CGPointMake(10, 230) withAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:25.0f], NSForegroundColorAttributeName:[UIColor orangeColor], NSBackgroundColorAttributeName:[UIColor blueColor]}];

     //画一张图片。

        UIImage* image = [UIImageimageNamed:@"head.png"];

        //绘制图片和上面的底层实现是不一样的,绘制图片的时候坐标系的原点在左下角。

        //通过翻转和平移显示正确的图片。

        //CGContextScaleCTM(context, 1, -1);

        //CGContextTranslateCTM(context, 0, -400);

       // CGContextRotateCTM (context, M_PI);

        CGContextDrawImage(context, CGRectMake(20, 20, 100, 100), [image CGImage]);

    总结:实际开发中不要使用CGContextDrawImage和drawAtPoint去绘制图片和文字,效率非常低.

    //UILabel,CATextLayer和UIImageView都对底层的绘制有优化,效率比绘制高很多.

    //drawRect:永远不要手动去调用.如果需要刷新屏幕自定义绘制的内容,需要调用UIView的setNeedsDisplay

    调用setNeedsDisplay后,系统绘制合适的时间去调用drawRect;方法刷新屏幕,节省系统的开销.

    相关文章

      网友评论

          本文标题:绘制方法

          本文链接:https://www.haomeiwen.com/subject/ubjouftx.html