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

    效果:

    函数部分主要是渐变效果

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

  • 相关阅读:
    ThinkPHP5如何修改默认跳转成功和失败页面
    layer:web弹出层解决方案
    js插件---video.js如何使用
    【Leetcode】Search a 2D Matrix
    tableView 短剪线离开15像素问题
    经Apache将tomcat转用80port这两个域名
    [Python 2.7] Hello World CGI HTTP Server
    《代码的第一行——Android》封面诞生
    MySQL汇总数据
    Windows移动开发(一)——登堂入室
  • 原文地址:https://www.cnblogs.com/greywolf/p/2616624.html
Copyright © 2020-2023  润新知