object.Fill = new SolidColorBrush(Color.FromRgb(R, G, B));
但如果介面想要用 HSV 來當作輸入參數的話,這邊有一個轉換的方法參考
色彩轉換方法 HSV2RGB(h, s, v)
object.Fill = new SolidColorBrush( HSV2RGB(h, s, v) );
輸入HSV參數(0~255)
輸出RGB (byte)給物件填滿色彩
// H:0~255, S:0~255, V:0~255 private Color HSV2RGB(float H, float S, float V) { float H_Index = H / 255 * 360; float S_Index = S / 255; float V_Index = V / 255; float C = V_Index * S_Index; float X = C * (1 - Math.Abs(H_Index / 60 % 2 - 1)); float m = V_Index - C; float R_Index, G_Index, B_Index; if (H_Index >= 0 && H_Index < 60) { R_Index = C; G_Index = X; B_Index = 0; } else if (H_Index >= 60 && H_Index < 120) { R_Index = X; G_Index = C; B_Index = 0; } else if (H_Index >= 120 && H_Index < 180) { R_Index = 0; G_Index = C; B_Index = X; } else if (H_Index >= 180 && H_Index < 240) { R_Index = 0; G_Index = X; B_Index = C; } else if ((H_Index >= 240 && H_Index < 300)) { R_Index = X; G_Index = 0; B_Index = C; } else { R_Index = C; G_Index = 0; B_Index = X; } return Color.FromRgb((byte)((R_Index + m) * 255), (byte)((G_Index + m) * 255), (byte)((B_Index + m) * 255)); }
END
沒有留言:
張貼留言