グラデーション ブラシで使用する既存の色を暗くしたいと考えています。誰かがこれを行う方法を教えてもらえますか?
C#、.net 2.0、GDI+
簡単な方法として、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 で明るくします)
また、使用してみることができます
ControlPaint.Light(baseColor, percOfLightLight)
また
ControlPaint.Dark(baseColor, percOfDarkDark)
RGB から HSV (または HSL) に変換し、V (または L) を調整してから元に戻します。
色相 (H)、彩度 (S)、および明るさを取得するメソッドをSystem.Drawing.Color
提供しますが、他の変換の方法ではあまり提供しません。HSV (または HSV 値) から新しいインスタンスを作成することは特にありませんが、変換は非常に簡単です。埋め込む。ウィキペディアの記事では、「 HSL と HSV 」から始まる適切な収束が得られます。
Richard が言及した変換の C# コードを次に示します。
前述の方法は色を暗くしますが、色相を大幅に調整するため、結果はあまり良くありません. 最良の答えは、Rich Newman の HSLColorクラスを使用して明度を調整することです。
public Color Darken(Color color, double darkenAmount) {
HSLColor hslColor = new HSLColor(color);
hslColor.Luminosity *= darkenAmount; // 0 to 1
return hslColor;
}