• OC画图


    1.获取当前的画板

    CGContextRef context = UIGraphicsGetCurrentContext();

    2.设置画笔的颜色

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

     CGContextSetRGBStrokeColor(context, 1, 0, 0, 1);

    //设置画笔的宽度

        CGContextSetLineWidth(context, 20);

        

        //设置画笔的样式

        CGContextSetLineCap(context, kCGLineCapRound);

    //把画笔移动到某一个点

        CGContextMoveToPoint(context,firstPoint.x, firstPoint.y);

    //跟另外一个点之间形成一条线

        CGContextAddLineToPoint(context, nextPoint.x, nextPoint.y);

    //把画板上刚才描的路径画出来

        CGContextStrokePath(context);

         

        //画圆  Ellipse椭圆

        //CGContextStrokeEllipseInRect(context, CGRectMake(100, 200, 200, 200));

        //画矩形

        //CGContextStrokeRect(context, CGRectMake(20, 220, 250, 250));

        

    因为drawRect是系统的方法   系统不允许我们自己去调用这个方法所以只能调用

     [self setNeedsDisplay];

    - (void)drawRect:(CGRect)rect

    //这个方法提供给我们在一个视图显示之前 自己去绘制一些东西

        //不需要自己创建画板

    简单画板编辑

    1.在storyBoard中拖拽所需的控件 (一个imageVIew用来展示画板的背景颜色  一个View设置成透明让其充当画板(其大小和imageVIew的大小一样) 四个lab分别是R G B Width 四个UIslider  一个View 显示调试好的颜色  若干button (撤销 清空 橡皮上(画笔)背景图片 画笔样式 保存))

    2.给UIslider绑定方法通过slider的value的变化改变颜色 并且让View的背景颜色显示为调试后的颜色

    3.画笔大小UISlider方法中 让当前的宽度为slider的value值

    4.button点击方法中点击不同的button实现撤销 (就是把线数组 颜色数组 画笔宽度数组 橡皮差数组 字体样式数组 分别移除其数组中的最后一个值)并且调用[drawView setNeedsDisplay];方法

    5.清空就是把上面的咯咯数组删除

    橡皮差 点击让橡皮差得状态改变 并改变橡皮差得标题

    6.点击可改变背景图片

    7.改变画笔状态

    8.保存

     // 1,把背景图片和画的画合成一张图片

                // 缺点:橡皮擦会把背景图片擦掉

                UIGraphicsBeginImageContext(CGSizeMake(280, 280));

    //            [bgImageView drawRect:CGRectMake(0, 0, 280, 280)];

    //            [drawView drawRect:CGRectMake(0, 0, 280, 280)];

                CGContextRef context = UIGraphicsGetCurrentContext();

                [bgImageView.layer renderInContext:context];

                [drawView.layer renderInContext:context];

                UIImage *image =  UIGraphicsGetImageFromCurrentImageContext();

                

                // 把图片写入系统相册

                UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:),nil);

    画板View中把相应的数组设置为你属性 设置当前的颜色的属性 设置当前画笔大小的属性 设置判断是不是橡皮差的属性

    9.在init方法中初始化各个数组并设置初始的当前的画笔的大小和颜色

    10.在awakeFromNib中初始化各个数组并设置初始的当前的画笔的大小和颜色

    11在drawRect方法中

    12.获取当前的画板

    13.设置线条的样式

    14.遍历大数组取出里面的小数组并且获取当前小数组的索引   根据此索引获取当前画笔的颜色 并把颜色设置给画笔  获取当前是否是橡皮差 如果是设置为橡皮差模式

     // 橡皮擦模式

                CGContextSetBlendMode(context, kCGBlendModeClear);

    如果不是设置为普通模式

    // 普通模式

                CGContextSetBlendMode(context, kCGBlendModeNormal);

    取出画笔对应的宽度 设置线条的宽度  

    把画笔移到某个点 在小数组里面取出第一个元素 并设置为画笔的开始点

    遍历小数组中剩下的元素  设置到下一个点的形成的一条线的点

    15.把路径画出来

    16.在touchesBegan方法中初始化小数组并把开始点放到数组中 把小数组放到大数组中  把当前的颜色放到颜色数组中 把当前的画笔大小放到画笔数组中 把是否是橡皮差放到橡皮差数组中

    17.在move方法中把点放到小数组中

    调用[self setNeedsDisplay];

  • 相关阅读:
    linux(ubuntu) 安装 node.js
    正反向代理
    js正则表达式----replace
    webpack开发小总结
    稳定排序和非稳定排序
    树状数组 --- (离散化+树状数组、求逆序对)
    编程之美初赛第一场 题目3 : 活动中心
    巴什博弈 杭电 1847
    巴什博弈 杭电 1846
    约瑟夫环问题详解
  • 原文地址:https://www.cnblogs.com/MyType/p/4904935.html
Copyright © 2020-2023  润新知