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

    效果:

    函数部分主要是渐变效果

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

  • 相关阅读:
    Linux常用命令-centos
    USACO 2006 Open, Problem. The Country Fair 动态规划
    USACO 2007 March Contest, Silver Problem 1. Cow Traffic
    USACO 2007 December Contest, Silver Problem 2. Building Roads Kruskal最小生成树算法
    USACO 2015 February Contest, Silver Problem 3. Superbull Prim最小生成树算法
    LG-P2804 神秘数字/LG-P1196 火柴排队 归并排序, 逆序对
    数据结构 并查集
    浴谷国庆集训 对拍
    1999 NOIP 回文数
    2010 NOIP 普及组 第3题 导弹拦截
  • 原文地址:https://www.cnblogs.com/greywolf/p/2616624.html
Copyright © 2011-2022 走看看