我正在尝试制作棕褐色效果,并且需要将某些颜色减少到一定百分比。我的编译器错误如下:
Error: The constructor java.awt.Color(double, double, double) is undefined
Error: The constructor java.awt.Color(int, int, double) is undefined
Error: The constructor java.awt.Color(int, int, double) is undefined
这是我的代码:
public void sepiaTint()
{
Pixel[] pixelArray = this.getPixels();
for (int i = 0; i < pixelArray.length; i++)
{
Pixel pixelObj = pixelArray[i];
int amountRed = pixelObj.getRed();
int amountGreen = pixelObj.getGreen();
int amountBlue = pixelObj.getBlue();
if (amountRed < 60)
{
Color newColor = new Color(amountRed*0.9, amountGreen*0.9, amountBlue*0.9);
pixelObj.setColor(newColor);
}
if (amountRed >= 60 && amountRed <190)
{
Color newColor = new Color(amountRed, amountGreen, amountBlue*0.8);
pixelObj.setColor(newColor);
}
else
{
Color newColor = new Color(amountRed, amountGreen, amountBlue*0.9);
pixelObj.setColor(newColor);
}
}
this.repaint();
}
最佳答案
Pixel.getRed()
返回一个整数,因此 Color(float, float, float)
对您来说毫无用处。您想要的是 Color(int, int, int)
构造函数。
0.9
被解释为 double,因此在计算值后必须再次将其转换为 int。
Color newColor = new Color((int)(amountRed*0.9), (int)(amountGreen*0.9), (int)(amountBlue*0.9));
关于Java颜色未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20140944/