• 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);//绘图

    效果:

    函数部分主要是渐变效果

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

  • 相关阅读:
    Shell中调用、引用、包含另一个脚本文件的三种方法
    mysql基础
    传智博客(JavaWeb方面的所有知识)听课记录(经典)
    nginx配置负载均衡与反向代理
    nginx 详解
    iOS开发之集成ijkplayer视频直播
    Nginx配置文件nginx.conf中文详解(总结)
    WorldWind源码剖析系列:数学引擎类MathEngine
    WorldWind源码剖析系列:二维点类Point2d和三维点类Point3d
    WorldWind源码剖析系列:枚举类型
  • 原文地址:https://www.cnblogs.com/greywolf/p/2616624.html
Copyright © 2020-2023  润新知