28

グラデーション ブラシで使用する既存の色を暗くしたいと考えています。誰かがこれを行う方法を教えてもらえますか?

C#、.net 2.0、GDI+

4

6 に答える 6

36

簡単な方法として、RGB 値を因数分解できます。

    Color c1 = Color.Red;
    Color c2 = Color.FromArgb(c1.A,
        (int)(c1.R * 0.8), (int)(c1.G * 0.8), (int)(c1.B * 0.8));

(暗くする必要があります。たとえば、* 1.25 で明るくします)

于 2009-04-10T10:15:01.933 に答える
29

また、使用してみることができます

ControlPaint.Light(baseColor, percOfLightLight)

ControlPaint.Light

また

ControlPaint.Dark(baseColor, percOfDarkDark)

ControlPaint.Dark

于 2009-04-22T16:40:28.720 に答える
17

RGB から HSV (または HSL) に変換し、V (または L) を調整してから元に戻します。

色相 (H)、彩度 (S)、および明るさを取得するメソッドをSystem.Drawing.Color提供しますが、他の変換の方法ではあまり提供しません。HSV (または HSV 値) から新しいインスタンスを作成することは特にありませんが、変換は非常に簡単です。埋め込む。ウィキペディアの記事では、「 HSL と HSV 」から始まる適切な収束が得られます。

于 2009-04-10T10:09:47.250 に答える
10

Richard が言及した変換の C# コードを次に示します。

C# での RGB から HSL / HSL から RGB

于 2009-04-10T10:15:06.813 に答える
4

前述の方法は色を暗くしますが、色相を大幅に調整するため、結果はあまり良くありません. 最良の答えは、Rich Newman の HSLColorクラスを使用して明度を調整することです。

public Color Darken(Color color, double darkenAmount) {
    HSLColor hslColor = new HSLColor(color);
    hslColor.Luminosity *= darkenAmount; // 0 to 1
    return hslColor;
}
于 2013-09-14T09:01:17.773 に答える