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
沒有留言:
張貼留言