UIColorの混合

cocoaの場合、描画関係のAPIが充実しているので自分でグラデーションを描画する事は少ないと思われます。
が、まれーにグラデーションの中間色、色と色とを特定の割合で混合した色を求めたい状況があるわけです。

そんな時はこれ
weightが0の時はcolorFrom、100の時はcolorToの色となるように色成分を混合して
返してくれます。


// weight: 0~100
-(UIColor*)makeBlendColorFrom:(UIColor*)colorFrom colorTo:(UIColor*)colorTo weight:(float)weight
{
    float r1,g1,b1,r2,g2,b2,alpha;

    //RGB値を求める
    [colorFrom getRed:&r1 green:&g1 blue:&b1 alpha:&alpha];
    [colorTo getRed:&r2 green:&g2 blue:&b2 alpha:&alpha];

    //色成分を混合
    float red = (r2*weight + r1*(100.0 - weight))/100.0;
    float green = (g2*weight + g1*(100.0 - weight))/100.0;
    float blue = (b2*weight + b1*(100.0 - weight))/100.0;

    return [UIColor colorWithRed:red green:green blue:blue alpha:1];
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です