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

    效果:

    函数部分主要是渐变效果

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

  • 相关阅读:
    求每天的收入和支出
    行列 转换 合并 分拆
    用户消费总金额 2000以下 20004000 40006000 查询连续数字,统计个数
    txt文件分割导入数据库
    字符串分割函数拆分成多行
    如何向一个自增字段插值
    sql中带in条件的查询及提高效率
    逐行计算、逐行递延、逐行更新
    SQL2005实现全文检索的步骤 停止数据库的用户连接
    查字段指定数据后一行记录
  • 原文地址:https://www.cnblogs.com/greywolf/p/2616624.html
Copyright © 2011-2022 走看看