문서에서 HsbToRgb 변환기에 대한 검색을 수행했지만 "hsb"또는 "hsl"이 포함 된 것을 찾지 못했기 때문에 그냥 존재하지 않는다고 생각합니다. 그러나이 변환을 지원하는 클래스가 있습니까?.NET Framework 3.5에 HsbToRgb 변환기가 있습니까? 아니면 내 컴퓨터를 롤업해야합니까?
업데이트
나는 동일한 0xA3의 약간의 차이 인이 함께가는 끝났다. 또한 RGB로 변환하고 한 번에 알파 채널을 설정할 수 있도록 AhsbToArgb
을 추가했습니다. 적색 - 녹색 - 청색 색조 채도 밝기 변환 -
public static Color AhsbToArgb(byte a, double h, double s, double b)
{
var color = HsbToRgb(h, s, b);
return Color.FromArgb(a, color.R, color.G, color.B);
}
HsbToRgb
는 : -
AhsbToArgb
알파 채널을 허용
public static Color HsbToRgb(double h, double s, double b)
{
if (s == 0)
return RawRgbToRgb(b, b, b);
else
{
var sector = h/60;
var sectorNumber = (int)Math.Truncate(sector);
var sectorFraction = sector - sectorNumber;
var b1 = b * (1 - s);
var b2 = b * (1 - s * sectorFraction);
var b3 = b * (1 - s * (1 - sectorFraction));
switch (sectorNumber)
{
case 0:
return RawRgbToRgb(b, b3, b1);
case 1:
return RawRgbToRgb(b2, b, b1);
case 2:
return RawRgbToRgb(b1, b, b3);
case 3:
return RawRgbToRgb(b1, b2, b);
case 4:
return RawRgbToRgb(b3, b1, b);
case 5:
return RawRgbToRgb(b, b1, b2);
default:
throw new ArgumentException("Hue must be between 0 and 360");
}
}
}
RawRgbToRgb
-의 int로 두 배로 변환하고, 색을 돌려 대상 :
private static Color RawRgbToRgb(double rawR, double rawG, double rawB)
{
return Color.FromArgb(
(int)Math.Round(rawR * 255),
(int)Math.Round(rawG * 255),
(int)Math.Round(rawB * 255));
}
물고기를 수행. org/wiki/HSL_and_HSV –