假設我有一個隨機的RGB值,如240 23 123.好嗎? 所以我想要轉換HSV中的RGB值,並且我需要RGB顏色正好處於漸變的中間。所有其他的漸變值都應該有更多的飽和度或更少。 理想情況下,漸變應該始終趨向於白色,而與初始RGB值無關。 有沒有一個公式或算法來實現這一目標? 結果應該是1個梯度的HSV值數組。獲取給定顏色的漸變,其中顏色位於漸變的中間
0
A
回答
1
如果您希望漸變以白色開始,轉到您的顏色,然後轉到黑色,可以採用多種方法。這裏有一種方法:
const int numEntries = 20;
const int halfNumEntries = numEntries/2;
RGBColor gradient[numEntries];
HSVColor hsv = RGBToHSV (rgb); // Where rgb is the RGB color you start with
// Gradient from white to your color
for (int i = 0; i < halfNumEntries; i++)
{
float newHue = hsv.hue;
float newSat = (i/halfNumEntries) * hsv.sat;
float newVal = 1.0 + (i/halfNumEntries) * (hsv.val - 1.0);
gradient [ i ] = HSVToRGB (newHue, newSat, newVal);
}
gradient [ halfNumEntries ] = rgb;
// Gradient from your color to black
for (int i = (halfNumEntries + 1); i < numEntries; i++)
{
float newHue = hsv.hue;
float newSat = hsv.sat + ((i - halfNumEntries)/(halfNumEntries - 1)) * (0.0 - hsv.sat);
float newVal = hsv.val + ((i - halfNumEntries)/(halfNumEntries - 1)) * (0.0 - hsv.val);
gradient [ i ] = HSVToRGB (newHue, newSat, newVal);
}
+0
i/10.0代表什麼?什麼是10.0。如果我想增加每個漸變的顏色數量? –
+0
10是條目數量的一半。 I/10是你在梯度的前半部分(或後半部分)有多遠。我已經更新了代碼,以便更清楚。 – user1118321
相關問題
- 1. Javascript顏色漸變
- 2. 顏色漸變(ColdFusion)
- 3. 顏色漸變的背景
- 4. Three.js行的顏色漸變
- 5. textcolor的顏色漸變
- 6. 帶顏色漸變的Borderpane
- 7. 帶顏色漸變的UIBeziepath
- 8. 用顏色製作顏色漸變:
- 9. 逐漸改變位圖的顏色?
- 10. 在wpf中綁定漸變顏色
- 11. 顏色1和顏色2的n種顏色的漸變
- 12. UIlabel文本顏色取決於漸變顏色指示器
- 13. 從兩種顏色(從漸變)計算中間顏色
- 14. 計算兩種顏色之間的漸變上給定點的顏色?
- 15. 逐漸改變顏色
- 16. JFreechart LookUpPaintScale顏色漸變
- 17. CSS創建顏色漸變
- 18. DarkGDK顏色漸變代碼
- 19. vPython - 逐漸改變顏色
- 20. 漸變顏色大小
- 21. 漸變顏色背景?
- 22. 漸變顏色拉斐爾
- 23. Android漸變顏色aarrggbb
- 24. Css漸變邊框顏色
- 25. CSS:漸變文字顏色?
- 26. FabricJS漸變顏色值
- 27. MPAndroidChart填充顏色漸變
- 28. JFreeChart系列漸變顏色
- 29. 生成顏色漸變
- 30. 生成顏色漸變
大多數語言有一個可用的色彩空間映射算法已經,有時在他們的STDLIB。我建議使用那些/那些。 –
色彩空間映射。不知道你在說什麼。這對我來說是一個新詞,色彩空間映射。我正在使用2D遊戲引擎。我的問題基本上是隨機的RGB值有一個不同的S,它可能在0到100之間變化,而90的S不完全在範圍的中間,所以我可以得到不超過20個值的結果數組,傾向於白色但有時變爲灰色。 –
理想情況下,也應該涉及V,但如何用S插入它我不知道。 –