zoukankan      html  css  js  c++  java
  • ios CGContext 学习1 画线 画矩形 渐变效果

    void drawLinearGradient(CGContextRef context,

                            CGRect rect,

                            CGColorRef startColor,

                            CGColorRef endColor)

    {

        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

        CGFloat locations[] = {0.0,1.0}; //颜色所在位置

        

        NSArray *colors = [NSArrayarrayWithObjects:(id)startColor,(id)endColor, nil];//渐变颜色数组

        CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef) colors, locations);//构造渐变

        

        CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));

        CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));

        

        CGContextSaveGState(context);//保存状态,主要是因为下面用到裁剪。用完以后恢复状态。不影响以后的绘图

        CGContextAddRect(context, rect);//设置绘图的范围

        CGContextClip(context);//裁剪

        CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);//绘制渐变效果图

        CGContextRestoreGState(context);//恢复状态

        

        CGGradientRelease(gradient);

        CGColorSpaceRelease(colorSpace);

    }

    //使用

     CGContextRef context = UIGraphicsGetCurrentContext();

        CGColorRef whiteColor = [UIColorcolorWithRed:1.0green:1.0blue:1.0alpha:1.0].CGColor;

        CGColorRef lightGrayColor = [UIColorcolorWithRed: 230.0 / 255.0 

                                                    green: 230.0 / 255.0 

                                                     blue: 230.0 / 255.0 

                                                    alpha:1.0].CGColor;

        CGRect paperRect = self.bounds;

        drawLinearGradient(context, paperRect, whiteColor,lightGrayColor);

    CGContextSetStrokeColorWithColor(context, lightGrayColor);

        CGRect newrRect = CGRectInset(paperRect, 1.5, 1.5);//构造位置

        CGContextSetLineWidth(context, 1);//设置笔宽

        CGContextStrokeRect(context, newrRect);//绘图

    效果:

    函数部分主要是渐变效果

    后面的是笔刷画一条虚拟的边框。

  • 相关阅读:
    VI中的批量替换--转载
    Zookeeper集群
    Zookeeper实现Master选举(哨兵机制)
    分布式session之token解决方案实现
    浏览器
    分布式session之redis解决方案实现
    服务器操作常用
    Nginx安装教程(Centos6.8)
    分布式锁(Redis实现)
    开发总结
  • 原文地址:https://www.cnblogs.com/greywolf/p/2616624.html
Copyright © 2011-2022 走看看