IOS中使用CGContext画图填充渐变颜色图层

原创 2015年07月10日 15:25:08

-(void)fillColor

//pointArr中存放的是每个点的CGPoint,自右向左画

    //填充颜色

    float alpha = 0;

    //计算分层透明度

    

    

    CGContextRef gc = UIGraphicsGetCurrentContext();

    

    //创建CGMutablePathRef

    CGMutablePathRef path = CGPathCreateMutable();


        if ([pointArr count]>1) {

            for (int j =1; j<[pointArr count]; j++) {

                CGPoint point = [pointArr[j-1] CGPointValue];

                CGPathMoveToPoint(path, NULL,point.x, point.y);//右上角开始画

                CGContextMoveToPoint(gc,  point.x, point.y);

                CGPathAddLineToPoint(path, NULL, point.x, SELF_HEIGHT - 3);//右下角画

                CGPoint point1 = [pointArr[j] CGPointValue];

                CGPathAddLineToPoint(path, NULL, point1.x, SELF_HEIGHT - 3);//左下角画

                CGPathAddLineToPoint(path, NULL, point1.x, point1.y);

                CGContextAddLineToPoint(gc, point1.x, point1.y);//左上角

                CGPathCloseSubpath(path);

                CGContextStrokePath(gc);

                CGPoint point2 = [pointArr[j-1] CGPointValue];

                CGPoint point3 =[pointArr[j] CGPointValue];

                if (pointArr.count>0) {

                    if (point2.y<point3.y) {

                       

                    alpha = [self separatedAlpha:point2.y];

                        

                    }else

                    {

                     alpha = [self separatedAlpha:point3.y];

                

                    }

                }

    

                for (int i = 0;i<pointArr.count-1; i++) {

                    [pointArr removeObjectAtIndex:i];

                }

            }

            

            


            //绘制渐变透明度有100%到28%整体再透明度14%

            [self drawLinearGradient:gc path:path startColor:[UIColor colorWithRed:0/255.0 green:142/255.0 blue:170/255.0 alpha:alpha * 0.14].CGColor endColor:[UIColor colorWithRed:0/255.0 green:142/255.0 blue:170/255.0 alpha:0.28*0.14].CGColor];

            

            

            //Context中获取图像,并显示在界面上

            UIImage *img = UIGraphicsGetImageFromCurrentImageContext();

            UIGraphicsEndImageContext();

            

            UIImageView *imgView = [[UIImageView alloc] initWithImage:img];

            [self addSubview:imgView];

            

        }

}

-(float)separatedAlpha:(float)heightVlaue

{

   //计算分层透明度

    float height = ((37.0-self.min)/self.interval*self.horizontalLineInterval-self.contentScroll.y+StartHeight);

    

    return(SELF_HEIGHT -  heightVlaue)/height;

}

- (void)drawLinearGradient:(CGContextRef)context

                      path:(CGPathRef)path

                startColor:(CGColorRef)startColor

                  endColor:(CGColorRef)endColor

{

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    CGFloat locations[] = { 0.0, 1.0 };

    

    NSArray *colors = @[(__bridge id) startColor, (__bridge id) endColor];

    

    CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef) colors, locations);

    

    

    CGRect pathRect = CGPathGetBoundingBox(path);

    

    //具体方向可根据需求修改 可改变方向是的渐变颜色45°或者垂直方向渐变颜色

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

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

    

    CGContextSaveGState(context);

    CGContextAddPath(context, path);

    CGContextClip(context);

    CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);

    CGContextRestoreGState(context);

    

    CGGradientRelease(gradient);

    CGColorSpaceRelease(colorSpace);

}





版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

IOS中使得图片模糊的效果的方法

-(void)blurUserView {      //     DOWN_IMAGE(userView, STRING_VALUE(userDict[@"avatar_big"]),...

iOS 为UIView添加渐变色的两种方法

一、CAGradientLayer介绍 二、Core Graphics 三、Demo地址

iOS中为控件设置颜色渐变和透明度渐变

代码为控件设置颜色渐变和透明度渐变

IOS学习 绘图 UIBezierPath 绘基本图形、样式设置、渲染填充

#import "CZView.h" @implementation CZView -(void)drawRect:(CGRect)rect{     //1...
  • ridxmc
  • ridxmc
  • 2016-04-29 22:03
  • 3649

CGContext的基本认识

CGContextRef context = UIGraphicsGetCurrentContext(); 设置上下文 CGContextMoveToPoint 开始画线 CGContextAdd...

iOS找色块游戏

// //  ViewController.m //  UI-找色块游戏 // //  Created by jzq_mac on 15/7/22. //  Copyright (c) 20...

iOS开发小项目之找色块游戏

效果图如下: 核心代码如下: TwoViewController.m中 #import "TwoViewController.h" #import "ThereViewCon...

iOS 实现背景颜色渐变的方式

iOS里面的背景颜色实现渐变的方式有两种,第一种就是给一个渐变的图片做背景,当然这样有很大的局限性,比如我现在就需要根据项目需求要动态的改变渐变背景色。 这样首先想到quartz 2D 这里的知识进...

iOS实现渐变背景色的三种方法

In some particular circumstances, we want to use a gradient background view. As far as my knowledge ...
  • lgouc
  • lgouc
  • 2015-08-03 13:29
  • 26916

iOS中制作渐变色视图

在iOS中,学会使用渐变色来设置一个视图的颜色比用图片要好一些。 可以到guithb上下载CRGradientLabel类来做需要的UILabel,我把该类的继承UILabel改为了UIVIew,这样...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)