zoukankan      html  css  js  c++  java
  • ObjectC&&Swift 渐变色算法实现

    -(NSArray *)getGradientColorWithStartColor:(UIColor *)startColor endColor:(UIColor *)endColor step:(NSInteger)step inverse:(BOOL)inverse {
        //1 get start color rgb
        CGFloat startR = 0.0, startG = 0.0, startB = 0.0;
        CGColorRef startColorRGB = [startColor CGColor];
        NSInteger startNumComponents = CGColorGetNumberOfComponents(startColorRGB);
        if (startNumComponents == 4)
        {
            const CGFloat *components = CGColorGetComponents(startColorRGB);
            startR = components[0];
            startG = components[1];
            startB = components[2];
        }
        //2 get end color rgb
        CGFloat endR = 0.0, endG = 0.0, endB = 0.0;
        CGColorRef endColorRGB = [endColor CGColor];
        NSInteger endNumComponents = CGColorGetNumberOfComponents(endColorRGB);
        if (endNumComponents == 4)
        {
            const CGFloat *components = CGColorGetComponents(endColorRGB);
            endR = components[0];
            endG = components[1];
            endB = components[2];
        }
        //3 calculate total threshold by step
        CGFloat stepR = 0.0, stepG = 0.0, stepB = 0.0;
        stepR = step == 1 ? 0 : (endR-startR) / (step - 1);
        stepG = step == 1 ? 0 : (endG-startG) / (step - 1);
        stepB = step == 1 ? 0 : (endB-startB) / (step - 1);
        //calculate uicolor by step
        CGFloat green = startG;
        CGFloat red   = startR;
        CGFloat blue  = startB;
        NSMutableArray *stepColorArray = [[NSMutableArray alloc] initWithCapacity:step];
        for (NSInteger i = 0; i < step - 1; i++) {
            red   = red + stepR;
            green = green + stepG;
            blue  = green + stepB;
            UIColor *color = [UIColor colorWithRed:red green:green blue:blue alpha:0];
            [stepColorArray addObject:color];
        }
        return stepColorArray;
    }
    

  • 相关阅读:
    poj 3310(并查集判环,图的连通性,树上最长直径路径标记)
    poj 3308(最小点权覆盖、最小割)
    poj 3281(网络流+拆点)
    poj 3275(传递闭包)
    poj 3204(最小割)
    poj 3164(最小树形图)
    poj 2987(最大权闭合图+割边最少)
    poj 2455(二分+最大流)
    poj 2391(二分+最大流)
    poj 2135(最小费用最大流)
  • 原文地址:https://www.cnblogs.com/shujucn/p/7481453.html
Copyright © 2011-2022 走看看