3

パン ジェスチャ認識エンジンに応答する円形グラデーションを使用してカラー ホイールを開発し、色のアルファ値を制御するスライダーと、R、G、および B の値を出力するテキスト フィールドを追加しました。

色の明るさを制御するスライダーを実装する必要がありますが、次のコードを使用して動作させることができませんでした:

- (void)changeBrightness:(id)sender {
    hellSlider = (UISlider *)sender;

    float red = r;
    float green = g;
    float blue = b;
    float alp = alphaSlider.value;
    UIColor *color2 = [UIColor colorWithRed:red green:green blue:blue alpha: alp];
    colorView.backgroundColor = color2;
}

実際、これを解決する方法はまだわかりません。アクセスできる明るさのプロパティがないようですが、色をHSV値に変換する方法がわかりません。

どんな助けでも大歓迎です

4

3 に答える 3

4

HSB カラー方式を使用する必要があります。

+ (UIColor *)colorWithHue:(CGFloat)hue saturation:(CGFloat)saturation brightness:(CGFloat)brightness alpha:(CGFloat)alpha

カラー スタイル間の変換については、こちらを参照してください: iPhone で RGB から HSB に変更しますか?

于 2013-07-10T07:32:07.480 に答える
1

色をHSB色空間に変換する必要があります。これにより、「明るさ」のパラメーターが得られます。

インスタンスからこれらの値を取得するのUIColorは簡単ですが、参照によって値を渡す必要があるため、新しいコーダーにはなじみがないかもしれません。

UIColor *currentColor = colorView.backgroundColor;
CGFloat hue, saturation, brightness, alpha;

BOOL success = [currentColor getHue:&hue saturation:&saturation brightness:&brightness alpha:&alpha];

これにより、値がそれぞれのパラメーターに入れられます。その後、必要に応じて輝度コンポーネントを調整UIColorし、新しい値からオブジェクトを作り直すことができます。

brightness = hellSlider.value * brightness; // example transformation, assuming hellSlider's value is bounded between 0 and 1

UIColor *newColor = [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:alpha]; 
colorView.backgroundColor = newColor;
于 2013-07-10T08:04:43.560 に答える