2010-06-08 169 views
2

我想向我的用戶展示他們的窗體中有多少(明智的)符合新標準。我想讓他們知道的方式是百分比數量將被着色。 0%爲0xFF0000(純紅色),100%爲0x00FF00(純綠色)。計算每個步驟的顏色的最佳方法是什麼?生成顏色漸變

+0

http://stackoverflow.com/questions/668263/algorithm-question-need-to-dynamically-increment-from-00ff00-to-ff0000-超過時間/ 669786#669786 – 2010-06-08 14:43:43

+1

大概新標準與可訪問性無關,因爲您的一些用戶將無法辨別紅色和綠色之間的區別。 – 2010-06-08 14:44:44

+0

是啊,綠色<->紅色對於色盲患者來說會很難。 – 2010-06-08 14:46:48

回答

3

色彩空間轉換(由Tony的建議)會給你最好的結果。 但是,如果這超出了你所尋找的範圍,我建議一個簡單的算法,讓你黃色(0xFFFF00)爲50%:

對於高達50%的值從0xFF0000開始。
添加0xFF的*百分比/ 50的綠色成分。

對於上面0xFFFF00 50%開始的值。
減爲0xFF *百分比/ 50從紅色分量。

結果看起來不夠好爲我的客戶;-)

1

你並不需要自己進行計算 - 嘗試使用LinearGradient刷。 (msdn

LinearGradientBrush linGrBrush = new LinearGradientBrush(
    new Point(0, 10), 
    new Point(200, 10), 
    Color.FromArgb(255, 255, 0, 0), // Opaque red 
    Color.FromArgb(255, 0, 0, 255)); // Opaque blue 

Pen pen = new Pen(linGrBrush); 

e.Graphics.DrawLine(pen, 0, 10, 200, 10); 
e.Graphics.FillEllipse(linGrBrush, 0, 30, 200, 100); 
e.Graphics.FillRectangle(linGrBrush, 0, 155, 500, 30);