我想制作看起来像色谱的自定义GUI对象。
但是此色谱应该是交互式的,因此当用户单击该色谱的任何点时,代码会将色谱矩形的该点或坐标与所单击的颜色的rgb值相关联
点。
光谱的范围应该从零到最大可能的rgb值(教授说过要使其从零到255 ^ 3,我认为这是不正确的,因为3可以是不同的颜色)
那么颜色的范围应该关联并缩放到矩形较长边的像素数量。
点击部分是由我以前用过的鼠标监听器完成的,但是我不知道如何使它对几次点击做出反应。
那我该怎么做呢?
我也不想使用JColorchooser。
最佳答案
if(c >= 0 && c <= (1/6.f)){
red = 255;
green = 1530 * c;
blue = 0;
} else if( c > (1/6.f) && c <= (1/3.f) ){
red = 255 - (1530 * (c - 1/6f));
green = 255;
blue = 0;
} else if( c > (1/3.f) && c <= (1/2.f)){
red = 0;
green = 255;
blue = 1530 * (c - 1/3f);
} else if(c > (1/2f) && c <= (2/3f)) {
red = 0;
green = 255 - ((c - 0.5f) * 1530);
blue = 255;
} else if( c > (2/3f) && c <= (5/6f) ){
red = (c - (2/3f)) * 1530;
green = 0;
blue = 255;
} else if(c > (5/6f) && c <= 1 ){
red = 255;
green = 0;
blue = 255 - ((c - (5/6f)) * 1530);
}