[英]How to make gradient color white - brown - green using Java Color
我正在嘗試使漸變顏色之間:
White (light to dark)
Brown (dark to light
Green (dark to ligh)
但我不知道如何實現它。
我的嘗試很可怕,所以我請求你幫忙。
我的嘗試:
for (int i = 255; i > 0; i--) {
if (i > 230) {
g2.setColor(new Color(0 + i, 0 + i, 0 + i));
} else if (i <= 230 && i > 180) {
g2.setColor(new Color(139 - (255 - i), 89 - (255 - i), 19));
} else if (i <= 180 && i > 79) {
g2.setColor(new Color(0, 60 + (180 - i), 0));
} else {
g2.setColor(Color.blue);
}
g2.drawLine(0, 255 - i, 500, 255 - i);
}
看:
感謝您的任何幫助!
我認為它應該是一種:
for (int i = 255; i > 0; i--) {
float h;
float s;
float v;
if (i > 230) {
h = 0; // gray
s = 0;
v = 1f * i / 255;
} else if (i <= 230 && i > 180) {
h = 0.1; // brown
s = 0.8;
v = 1f * (230 - i) / (230 - 180);
} else if (i <= 180 && i > 79) {
h = 0.33; // green
s = 1f;
v = 1f * (180 - i) / (180 - 79);
} else {
h = 0.62; // blue
s = 1f;
v = 1f;
}
g2.setColor(new Color(Color.HSBtoRGB(h, s, v)));
g2.drawLine(0, 255 - i, 500, 255 - i);
}
我們的想法是在HSV顏色空間而不是RGB中操作,其中H(色調)和S(飽和度)分量確定顏色的位置,V確定“值” - 顏色與黑點的距離。 因此,您可以修復H和S分量並改變V以使顏色變淺或變暗。
請參閱: https : //docs.oracle.com/javase/8/docs/api/java/awt/Color.html#HSBtoRGB-float-float-float-
如果您為每種顏色找到更合適的h
和s
常量,請隨意評論/編輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.