您的位置:68399皇家赌场 > 域名注册 > ios (Quartz 2D绘制)各样绘图格局及相机的使用

ios (Quartz 2D绘制)各样绘图格局及相机的使用

发布时间:2019-08-17 15:38编辑:域名注册浏览(200)

    ios (Quartz 2D绘制)各个绘图格局及相机的施用

     

    一:

    切切实进行使的细节,本身也是参考www.Bkjia.com

    下边介绍具体选取Quartz 2D制图完成画图板效能

    .m文件中,dog的兑现如一而再中所示同样的

     

    #import drawTestView.h #import Dog.h @implementation drawTestView @synthesize dogs,tempdogs; - (NSMutableArray*)dogs{ if (dogs == nil) { dogs = [NSMutableArray array]; } return dogs; } - (NSMutableArray*)tempdogs{ if (tempdogs == nil) { tempdogs = [NSMutableArray array]; } return tempdogs; } - (void)drawRect:(CGRect)rect{ CGContextRef ctx = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(ctx,[[UIColor greenColor] CGColor]); //画图板功能 [dogs enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){ NSMutableArray*arr = [dogs objectAtIndex:idx]; for (int i = 0; i<[arr count]; i  ) { Dog*dog = (Dog*)[arr objectAtIndex:i]; if (i == 0) { CGContextMoveToPoint(ctx, dog.x, dog.y); }else{ CGContextAddLineToPoint(ctx, dog.x, dog.y); } } }]; [[UIColor blackColor]setStroke]; CGContextDrawPath(ctx, kCGPathStroke); } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch*touch = [touches anyObject]; CGPoint location = [touch locationInView:self]; Dog*dog = [[Dog alloc]init]; dog.x = location.x; dog.y = location.y; [self.tempdogs addObject:dog]; [self.dogs addObject:self.tempdogs]; [self setNeedsDisplay];//调用draw方法 } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch*touch = [touches anyObject]; CGPoint location = [touch locationInView:self]; Dog*dog = [[Dog alloc]init]; dog.x = location.x; dog.y = location.y; [self.tempdogs addObject:dog]; [self.dogs addObject:[self.tempdogs copy]]; [self setNeedsDisplay];//调用draw方法 } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ [tempdogs removeAllObjects]; } 
    

    二:相机的选取

     

    要在应用的viewcontroller中贯彻

    //假使只写二个UIImagePickerControllerDelegate,会现出警示,以至不会调用代理方法

     

        imagePicker = [[UIImagePickerController alloc]init];
        imagePicker.delegate = self;
    

     

    进去相机的秘籍

     

     

    - (IBAction)goImagePicker:(id)sender {
    
        if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
            self.imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
            self.imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceFront;//调用前置像头
        }else{
            self.imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        }
        self.imagePicker.allowsEditing = YES;
        [self presentViewController:self.imagePicker animated:YES completion:nil];
    }
    

     

     

    福寿绵绵七个代理方法:

     

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
        NSLog(@select);
        UIImage * image = [info objectForKey:UIImagePickerControllerEditedImage];
        _imageSelect.frame = CGRectMake(_imageSelect.frame.origin.x, _imageSelect.frame.origin.y, _imageSelect.frame.size.width, _imageSelect.frame.size.width*image.size.height/image.size.width);//为了不让选出来的图片变形
        _imageSelect.image = image;
        [self.imagePicker dismissViewControllerAnimated:YES completion:nil];
    }
    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
        [self.imagePicker dismissViewControllerAnimated:YES completion:nil];
    }
    

     

    (Quartz 2D绘制)各个绘图方式及相机的行使 一: 具体运用的内幕,本人也是参考www.Bkjia.com 下边介绍具体使用Quartz 2D制图完毕画图板功能...

    是因为如今在做多少个手势密码相关的种类,绘制手势密码用到CoreGraphics框架。

    本篇DEMO
    在iOS中开始展览绘图,不管您是或不是掌握,基本上正是选用的Core Graphics。Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎。它提供了低阶别、轻量级、高保真度的2D渲染,该框架能够用来基于路线的绘图、调换、颜色管理、脱屏渲染、模板、渐变、掩盖、图像数据处理、图像的创制、遮罩、以及PDF文书档案的创立、显示和深入分析。

    前言:
    对《iOS开荒系列--塑造自身的“美图秀秀”》小说做了整治
    即使对于CGPaht 或CGContextPath有不知道,那么请查:《IOS图形绘制路线CGPATH & CGCONTEXT相关联的CGPath & UIBezierPath》

    野趣驱动下,笔者查看了须臾间iOS的绘图相关的框架,总计如下:
    iOS的绘图框架有两种,咱们通常最常用的正是UIKit,其底层是信赖CoreGraphics落成的,并且好些个的图形分界面也都是由UIKit实现,并且UIImage、NSString、UIBezierPath、UIColor等都晓得怎么样绘制本人,也提供了部分措施来满意大家常用的绘图要求。除了UIKit,还应该有CoreGraphics、Core Animation,Core Image,OpenGL ES等三种框架,来满足区别的绘图须要。种种框架的大要介绍如下:

    Core Graphics API的富有操作都以在一个上下文中实行。所以在绘图之前,大家要求去获取该上下文,并传播实践渲染的函数中。

    在iOS中常用的绘图框架就是Quartz 2D,Quartz 2D是Core Graphics框架的一片段,是二个强有力的二维图像绘制引擎。Quartz 2D在UIKit中也可能有很好的卷入和购并,大家一般开销时所用到的UIKit中的组件都以由Core Graphics实行绘图的。不仅仅如此,当我们引进UIKit框架时系统会自行引入Core Graphics框架,何况为了方便开垦者使用在UIKit内部还对部分常用的绘图API实行了包装。

    UIKit:最常用的视图框架,封装度最高,都以OC对象
    CoreGraphics:首要绘图系统,常用于绘制自定义视图,纯C的API,使用Quartz2D做引擎
    CoreAnimation:提供有力的2D和3D动画效果
    CoreImage:给图片提供各样滤镜管理,比方高斯模糊、锐化等
    OpenGL-ES:重要用来游戏绘制,但它是一套编制程序规范,具体由装备创造商达成

    • 获得上下文的三种方法

    在iOS中绘制一般分为以下多少个步骤:

    CoreGraphics中绘制的利用分这两种:
    1,UIGraphicsGetCurrentContext()函数开首的绘制.
    2,UIGraphicsBeginImageContextWithOptions()函数早先的绘图,
    3,CGPathCreateMutable().
    4,还有UIBezierPath.

    1.获得绘图上下文
    2.创办并设置路线
    3.将路线增多到上下文
    4.安装上下文状态
    5.绘制路线
    6.保释路线
    图表上下文CGContextRef代表图形输出设备(也正是绘制的职位),包蕴了绘图图形的某个装置新闻,Quartz 2D中的全数目的最终都必须绘制到图片上下文。那样一来,大家在绘制图形时就不须求关切具体的设施新闻,统一了代码编写格局(在Quartz 2D中的绘图上下文能够是位图Bitmap、PDF、窗口Window、层Layer、打字与印刷对目的Printer)。

    直观的几张图:

    //创建图片类型的上下文
    UIGraphicsBeginImageContextWithOptions
    //UIView,在drawRect中,Cocoa会为你创建一个图形上下文
    - (void)drawRect:(CGRect)rect
    //CALayer
    - (void)drawInContext:(CGContextRef)ctx
    //delegate回调
    - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
    

    骨干图形绘制
    在UIKit中暗中认可已经为我们计划好了三个图形上下文对象,在UI控件的drawRect:方法(这几个点子在loadView、viewDidLoad方法后实施)中大家得以经过UIKit封装函数UIGraphicsGetCurrentContext()方法得到那个图形上下文(注意在其他UI控件方法中不能赢得那个指标),然后大家假设依据绘图步骤一步步进行就能够。上面自定义一个KCView承继自UIView,重写drawRect:方法绘制两条直线表达方面绘制的手续:

    图片 1

    • UIGraphicsBeginImageContextWithOptions函数创设的上下文适用于图像操作,何况该上下文属于当前上下文,你也能够经过UIGraphicsGetCurrentContext函数获得当前图形上下文
    • drawRect方法调用时,Cocoa创制的上线属于当前图形上下文,你也足以透过UIGraphicsGetCurrentContext函数得到当前图形上下文
    • delegate回调所具备的context,只是对三个图片上下文的引用,并不一定是最近上下文

    KCView.m

    框架剖析1.jpg

    绘制框架

    //绘图只能在此方法中调用,否则无法得到当前图形上下文
    -(void)drawRect:(CGRect)rect{
        //1.取得图形上下文对象
        CGContextRef context = UIGraphicsGetCurrentContext();
    
        //2.创建路径对象
        CGMutablePathRef path = CGPathCreateMutable();
        CGPathMoveToPoint(path, nil, 20, 50);//移动到指定位置(设置路径起点)
        CGPathAddLineToPoint(path, nil, 20, 100);//绘制直线(从起始位置开始)
        CGPathAddLineToPoint(path, nil, 300, 100);//绘制另外一条直线(从上一直线终点开始绘制)
    
    
        //3.添加路径到图形上下文
        CGContextAddPath(context, path);
    
        //4.设置图形上下文状态属性
        CGContextSetRGBStrokeColor(context, 1.0, 0, 0, 1);//设置笔触颜色
        CGContextSetRGBFillColor(context, 0, 1.0, 0, 1);//设置填充色
        CGContextSetLineWidth(context, 2.0);//设置线条宽度
        CGContextSetLineCap(context, kCGLineCapRound);//设置顶点样式,(20,50)和(300,100)是顶点
        CGContextSetLineJoin(context, kCGLineJoinRound);//设置连接点样式,(20,100)是连接点
        /*设置线段样式
        phase:虚线开始的位置    lengths:虚线长度间隔(例如下面的定义说明第一条线段长度8,然后间隔3重新绘制8点的长度线段,当然这个数组可以定义更多元素)
        count:虚线数组元素个数
        */
        CGFloat lengths[2] = { 18, 9 };
        CGContextSetLineDash(context, 0, lengths, 2);
        /*设置阴影
        context:图形上下文
        offset:偏移量
        blur:模糊度
        color:阴影颜色
        */
        CGColorRef color = [UIColor grayColor].CGColor;//颜色转化,由于Quartz 2D跨平台,所以其中不能使用UIKit中的对象,但是UIkit提供了转化方法
        CGContextSetShadowWithColor(context, CGSizeMake(2, 2), 0.8, color);
    
        //5.绘制图像到指定图形上下文
        /*CGPathDrawingMode是填充方式,枚举类型
        kCGPathFill:只有填充(非零缠绕数填充),不绘制边框
        kCGPathEOFill:奇偶规则填充(多条路径交叉时,奇数交叉填充,偶交叉不填充)
        kCGPathStroke:只有边框
        kCGPathFillStroke:既有边框又有填充
        kCGPathEOFillStroke:奇偶填充并绘制边框
        */
        CGContextDrawPath(context, kCGPathFillStroke);//最后一个参数是填充类型
    
        //6.释放对象
        CGPathRelease(path);
    }
    

    图片 2

    UIKit

    像UIImage、NSString、UIBezierPath、UIColor都提供了办法援救大家完毕绘图职务,虽然功能有限,但超越八分之四气象下都能满意我们的必要

    简化绘图格局

    框架分析2.jpg

    Core Graphics

    那是一个绘制专用的API族,平日也被改成QuartZ 2D。Core Graphics是iOS上具备绘图作用的根本,包含UIKit。

    地点的绘图情势未免显得略微麻烦,其实Core Graphics 内部对创立对象增加到上下文这两步操作进行了打包,能够一步成功。别的后边也说过UIKit内部其实封装了一部分以“UI”起头的艺术扶助大家举行图片绘制。就拿前边的事例来讲我们立异一些绘制方法:

    图片 3

    下边我们因此栗子来介绍三种分裂的绘图方法

    -(void)drawLine2{
        //1.获得图形上下文
        CGContextRef context=UIGraphicsGetCurrentContext();
    
        //2.绘制路径(相当于前面创建路径并添加路径到图形上下文两步操作)
        CGContextMoveToPoint(context, 20, 50);
        CGContextAddLineToPoint(context, 20, 100);
        CGContextAddLineToPoint(context, 300, 100);
        //封闭路径:a.创建一条起点和终点的线,不推荐
        //CGPathAddLineToPoint(path, nil, 20, 50);
        //封闭路径:b.直接调用路径封闭方法
        CGContextClosePath(context);
    
        //3.设置图形上下文属性
        [[UIColor redColor]setStroke];//设置红色边框
        [[UIColor greenColor]setFill];//设置绿色填充
        //[[UIColor blueColor]set];//同时设置填充和边框色
    
        //4.绘制路径
        CGContextDrawPath(context, kCGPathFillStroke);
    }
    

    框架剖析3.jpg

    UIKit:在UIView的子类方法drawRect方法中开始展览绘图

    - (void)drawRect:(CGRect)rect {
    //绘制一个空心圆
        UIBezierPath *round = [UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius:self.bounds.size.width/2];
    
        [[UIColor redColor] setStroke];
        [round stroke];
    }
    

    上边包车型客车操作相比较前边的办法应该说已经简化了无数,除了路线之外别的矩形、椭圆等都有照料的开创方法。别的上面我们也演示了密封路线的诀窍,大家可以运作看一下效果。

    UI开头的那多少个艺术是对CoreGraphics方法的卷入,底层是用CGPath的法子完成的,当然可能还投入了其余的框架。

    Core Graphics:在drwaRect中完毕绘制

    - (void)drawRect:(CGRect)rect {
        CGContextRef context = UIGraphicsGetCurrentContext();
    
    
    //    CGMutablePathRef path = CGPathCreateMutable();
    //    CGPathAddRoundedRect(path, nil, self.bounds, self.bounds.size.width/2, self.bounds.size.width/2);
    //    CGPathCloseSubpath(path);
    //    CGContextAddPath(context, path);
    
    
        CGContextAddEllipseInRect(context, self.bounds);
        CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
        CGContextSetLineWidth(context, 10);
    
    //    CGContextClip(context);
        CGContextStrokePath(context);
    }
    

    任何图形绘制
    深信我们明白了地点的绘图步骤其余图形绘制并不劳动,上边以多个例子简单演示一下别的图形的绘图,包罗文字和图像的绘图。
    绘制矩形


    在代理回调方法中开始展览绘图

    • 必要注意的是设置CALayer对象的代理时,不要将UIView对象设置为彰显层的信托对象,那是因为UIView对象已经是隐式层的代办对象,再将它设置为两叁个层的嘱托对象就能够见世难点。你能够编写一个顶住绘制图形的代理类。倘使您十分的大心设置了代理为view,最棒在dealloc方法中校layer对象的代办置空。至于绘图的不二秘技基本就和下面的好像。

    在底下的点子中仍是能够观察UIKit对绘图方法的包裹,使用起来更为简约。

    此间做CoreGraphics的有的实际上使用介绍

    UIGraphicsBeginImageContextWithOptions

    - (void)drawRect:(CGRect)rect {
    //UIKit
     UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0);
        //UIKit
    //    UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius:self.bounds.size.width/2];
    //    [[UIColor redColor] setStroke];
    //    [path stroke];
    
        //Core Graphics
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        CGContextAddEllipseInRect(ctx, self.bounds);
        CGContextSetStrokeColorWithColor(ctx, [UIColor redColor].CGColor);
        CGContextSetLineWidth(ctx, 1);
        CGContextStrokePath(ctx);
    
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    
    
        UIImageView *imageV = [[UIImageView alloc] initWithFrame:self.bounds];
        [imageV setImage:image];
        [self addSubview:imageV];
    
    }
    
    -(void)drawRectWithContext:(CGContextRef)context{
        //添加矩形对象
        CGRect rect=CGRectMake(20, 50, 280.0, 50.0);
        CGContextAddRect(context,rect);
        //设置属性
        [[UIColor blueColor]set];
        //绘制
        CGContextDrawPath(context, kCGPathFillStroke);
    }
    
    #pragma mark 绘制矩形(利用UIKit的封装方法)
    -(void)drawRectByUIKitWithContext:(CGContextRef)context{
        CGRect rect= CGRectMake(20, 150, 280.0, 50.0);
        CGRect rect2=CGRectMake(20, 250, 280.0, 50.0);
        //设置属性
        [[UIColor yellowColor]set];
        //绘制矩形,相当于创建对象、添加对象到上下文、绘制三个步骤
        UIRectFill(rect);//绘制矩形(只有填充)
    
        [[UIColor redColor]setStroke];
        UIRectFrame(rect2);//绘制矩形(只有边框)
    }
    

    1.头像外加一层圆环

    图片 4

    头像加外层圆环.jpg

    代码如下:

        myImageView = [[UIImageView alloc] initWithFrame:self.view.bounds];
        myImageView.backgroundColor = [UIColor lightGrayColor];
        UIImage *image = [UIImage imageNamed:@"circle_Test_0.jpeg"];
        //获取图片上下文
        UIGraphicsBeginImageContext(self.view.bounds.size);
    
        CGRect rect = CGRectMake(self.view.bounds.size.width / 2 - radius , self.view.bounds.size.height / 2 - radius, 2 * radius, 2 * radius);
        UIColor *boardColor = [UIColor yellowColor];
        CGFloat lineWidth = 5.0f;
        //绘图
        CGContextRef context = UIGraphicsGetCurrentContext();
        //绘制外面的圆圈
        CGContextAddEllipseInRect(context, rect);
        CGContextSetLineWidth(context, lineWidth);
        [boardColor setStroke];
        CGContextDrawPath(context, kCGPathEOFillStroke);
        //绘制图片
        CGRect imageRect = CGRectMake(rect.origin.x   lineWidth / 2 , rect.origin.y   lineWidth / 2 , rect.size.width - lineWidth , rect.size.height  - lineWidth);
        CGContextAddEllipseInRect(context, imageRect);
        CGContextClip(context);
        CGContextDrawPath(context, kCGPathEOFillStroke);
    
        //CGContextSaveGState/CGContextRestoreGState用于记录和恢复已存储的绘图context。这里可以不储存
    //  1.  CGContextSaveGState(context);
    
        /***************************
         CoreGraphics和UIKit的坐标系不一致,所以需要下面两行代码进行转换  CoreGraphics和OPENGLES的坐标系y轴都是向下
         ***************************/
    
        //坐标系转换 y轴向上改为向下
        CGContextTranslateCTM(context, 0.0, 2 * radius);
        CGContextScaleCTM(context, 1, -1);
    
        CGRect re = CGRectMake(self.view.bounds.size.width / 2 - radius , - (self.view.bounds.size.height / 2 - radius), 2 * radius, 2 * radius);
        CGContextDrawImage(context, re, image.CGImage);
    
    //  2.  CGContextRestoreGState(context);
    
        // 从图片上下文中获取绘制的图片
        UIImage* im = UIGraphicsGetImageFromCurrentImageContext();
        // 关闭图片上下文
        UIGraphicsEndImageContext();
        [myImageView setImage:im];
        [self.view addSubview:myImageView];
    

    CAShapeLayer绘图,能够异常的快达成部分总结的卡通片

    - (void)drawRect:(CGRect)rect {
        CAShapeLayer *layer = [CAShapeLayer layer];
        layer.strokeColor = [UIColor redColor].CGColor;
        layer.fillColor = [UIColor clearColor].CGColor;
        layer.lineWidth = 2;
        layer.lineCap = kCALineCapRound;
        [self.layer addSublayer:layer];
    
        //UIKit
    //    UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius:self.bounds.size.width/2];
    //    layer.path = path.CGPath;
    
        //Core Graphics
        CGMutablePathRef path = CGPathCreateMutable();
        CGPathAddRoundedRect(path, nil, self.bounds, self.bounds.size.width/2, self.bounds.size.height/2);
        CGPathCloseSubpath(path);
        layer.path = path;
    
        CGPathRelease(path);
    }
    
    • 那几个只是绘图的一部分简单利用,后续会结合demo完毕部分繁杂的绘图。

    Quart 2D 绘制图形简单总计

    制图椭圆

    2.运用Layer绘制加载动画

    图片 5

    image

    代码如下:

    - (void)drawRect:(CGRect)rect
    {
        CGFloat centerX = self.ZX_centerX;
        CGFloat centerY = self.ZX_centerY;
    
        CGContextRef context = UIGraphicsGetCurrentContext();
        //绘制大的圆形
        CGContextSetFillColorWithColor(context, [UIColor lightGrayColor].CGColor);
        CGContextAddEllipseInRect(context, CGRectMake(centerX - radius, centerY - radius, 2 * radius, 2 * radius));
        CGContextDrawPath(context, kCGPathEOFill);
        //绘制内部圆形,颜色覆盖之前的圆
        CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
        CGContextAddEllipseInRect(context, CGRectMake(centerX - insideRadius, centerY - insideRadius, 2 * insideRadius,2 * insideRadius));
        CGContextDrawPath(context, kCGPathEOFill);
        //添加一条线,作为起点
        CGContextMoveToPoint(context, centerX, centerY - insideRadius);
        CGContextAddLineToPoint(context, centerX, centerY - radius);
        CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
        CGContextSetLineWidth(context, .5);
        CGContextDrawPath(context, kCGPathStroke);
    }
    

    绘制圆环和一条线,为layer动画做筹算。


    -(CAShapeLayer *)zx_Layer
    {
        if (!_zx_Layer)
        {
            _zx_Layer = [CAShapeLayer layer];
    
            //利用lineWidth绘制扇形
            _zx_Layer.lineWidth = ZXLineWidth;
            _zx_Layer.strokeColor = [UIColor grayColor].CGColor;
            _zx_Layer.fillColor = [UIColor clearColor].CGColor;
    
            CGMutablePathRef circlePath = CGPathCreateMutable();
            //绘制弧线
            CGPathAddArc(circlePath, NULL, self.ZX_centerX, self.ZX_centerY, radius - ZXLineWidth * .5, 1.5 * M_PI, 1.49999 * M_PI, NO);
            _zx_Layer.path = circlePath;
            CGPathRelease(circlePath);
    
            [self.layer addSublayer:_zx_Layer];
        }
        return _zx_Layer;
    }
    

    创立一个CAShapeLayer,绘制弧线


        CABasicAnimation *ani = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
        ani.fromValue = @(_percent);
        ani.toValue = @(percent);
        //为了看起来的效果比较流畅 写死时间  second
        ani.duration = 20;
        ani.fillMode = kCAFillModeForwards;
        ani.removedOnCompletion = NO;
        ani.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    
        [self.zx_Layer addAnimation:ani forKey:nil];
    

    创设基本动画CABasicAnimation,做动画。


    总结:

     学习并使用了苹果CoreGraphics框架,路漫漫其修远兮,吾将上下而求索。不足之处,还望指正!
    

    githubDemo

    参考:

    http://www.cocoachina.com/ios/20170809/20187.html

    -(void)drawEllipse:(CGContextRef)context{
        //添加对象,绘制椭圆(圆形)的过程也是先创建一个矩形
        CGRect rect=CGRectMake(50, 50, 220.0, 200.0);
        CGContextAddEllipseInRect(context, rect);
        //设置属性
        [[UIColor purpleColor]set];
        //绘制
        CGContextDrawPath(context, kCGPathFillStroke);
    }
    

    弧形绘制

    -(void)drawArc:(CGContextRef)context{
        /*添加弧形对象
         x:中心点x坐标
         y:中心点y坐标
         radius:半径
         startAngle:起始弧度
         endAngle:终止弧度
         closewise:是否逆时针绘制,0则顺时针绘制
        */
        CGContextAddArc(context, 160, 160, 100.0, 0.0, M_PI_2, 1);
    
        //设置属性
        [[UIColor yellowColor]set];
    
        //绘制
        CGContextDrawPath(context, kCGPathFillStroke);
    }
    

    本文由68399皇家赌场发布于域名注册,转载请注明出处:ios (Quartz 2D绘制)各样绘图格局及相机的使用

    关键词: 68399皇家赌场 技术Blog 绘画

上一篇:iOS 趣谈设计格局——通知

下一篇:没有了