zoukankan      html  css  js  c++  java
  • CoreGraphics

    CoreGraphics叫做图形上下文,相当于视图的一块画布,用来处理绘制图形的操作。

    绘制图形的方式:1.通过创建一个图形上下文,在创建的上下文内进行绘图;

                           2.通过自定义的UIView上的drawRect方法,系统会自动准备好一个图形上下文,来实现绘图工作。但是drawRect是系统方法,我们不能调                           用,需要重新绘图的时候,可以调用setNeedsDisplay方法来实现重绘。

    使用方法:

    创建一个图形上下文,在创建的上下文内进行绘图:

    1.绘制矩形:

    //开始图像绘图
        UIGraphicsBeginImageContext(self.view.bounds.size);
        CGContextRef context = UIGraphicsGetCurrentContext();//获得图形上下文
        
        //矩形1
        CGContextAddRect(context, CGRectMake(50, 100, 165, 165));
        //矩形2
        CGRect rects[2];
        rects[0] = CGRectMake(70, 118, 30, 30);
        rects[1] = CGRectMake(165, 118, 30, 30);
        CGContextAddRects(context, rects, 2);
    
     [[UIColor redColor]setStroke];//画笔颜色
        CGContextSetLineWidth(context, 5.0);//画笔大小
        CGContextStrokePath(context);//绘制
        
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();//从Context中获取图像,并显示在界面上
        UIGraphicsEndImageContext();//终止绘制画布
        UIImageView *imageView = [[UIImageView alloc]initWithImage:image];//添加到UIImageView
        [self.view addSubview:imageView];

    2.绘制圆:

    //
        CGContextAddEllipseInRect(context, CGRectMake(60, 110, 50, 50));//通过图形上下文绘制圆,左眼
        CGContextAddEllipseInRect(context, CGRectMake(155, 110, 50, 50));//右眼

    3.绘制椭圆:

    //椭圆
        CGContextAddEllipseInRect(context, CGRectMake(110, 140, 50, 80));

    4.绘制直线:

    //直线
        CGContextMoveToPoint(context, 90, 230);
        CGContextAddLineToPoint(context, 190, 230);
        
        //添加折线段
        CGPoint point[4];
        point[0] = CGPointMake(20, 100);
        point[1] = CGPointMake(245, 100);
        point[2] = CGPointMake(135, 60);
        point[3] = CGPointMake(20, 100);
        CGContextAddLines(context, point, 4);

    5.绘制圆弧1:

     //圆弧线1
        CGContextMoveToPoint(context, 50, 120);//起始点
        CGContextAddArc(context, 50, 150, 30, M_PI_2, M_PI*3/2, 0);//半圆,第二个喝第三个参数为圆心point,第四个参数为半径,接下来是起始角度,终止角度,是否顺时针
        CGContextMoveToPoint(context, 215, 120);//起始点
        CGContextAddArc(context, 215, 150, 30, M_PI_2, M_PI*3/2, 1);

    6.绘制圆弧2:

    //弧线
        CGContextMoveToPoint(context, 215, 140);//起始点
        CGContextAddQuadCurveToPoint(context, 245, 150, 215, 160);//第一个参数为切点,第二个参数为终点
        CGContextMoveToPoint(context, 50, 140);
        CGContextAddQuadCurveToPoint(context, 20, 150, 50, 160);

    7.绘制弧线3:

     //弧线2
        CGContextMoveToPoint(context, 130, 180);//起始点
        CGContextAddCurveToPoint(context, 110, 200, 150, 200, 150, 180);
  • 相关阅读:
    在Linux下运行YY,WINE方式,主要注册表修改点及字体文件列表
    安卓so下,cmake编译系统,如何仅导出指定符号
    AutoHotKey脚本模板:初始化、配置、退出
    资源ID管理插件:VS6/VS.NET
    ListView控件,表格模式下,如何调整行高
    通过wscript运行的JS脚本,如何引入另一个JS文件
    64位编译器下,将指针转换成UINT32,不需要修改编译选项的编码方式
    视频帧双缓冲区的两个版本
    opencv、numpy中矩阵转置,矩阵内的固定位置相应的坐标变换
    CMake下,某些选项的后调整
  • 原文地址:https://www.cnblogs.com/moxuexiaotong/p/4986064.html
Copyright © 2011-2022 走看看