我正在尝试创建一个只使用一个滑块的颜色拾取器。我知道这不会允许所有的颜色,我将无法调整alpha,色调和饱和度。那里有很多颜色选择器的例子。一种常见的颜色选择器涉及使用正方形和线性光谱。广场可以让你改变色调和饱和度。我只想要线性频谱值。我很想用一些算法来做到这一点,但我想不出如何启动它。最糟糕的情况是,我可以使用具有颜色的数组,并将进度条的值用作索引。只有一个滑块的拾色器
0
A
回答
0
我不确定,但我认为你可以这样想。
为了将所有颜色表示为一个值,蓝色需要1个字节,红色需要1个字节,绿色需要1个字节。
所以你可以做到这一点。
设滑块是0为0xFFFFFF
然后过滤出由值:
#include <stdio.h>
int main()
{
int color = 0x0aFF0b;
int r = ((0xff << 4) & color) >> 4;
int g = ((0xff << 2) & color) >> 2;
int b = ((0xff) & color);
printf("r: %x\n", r);
printf("r: %x\n", g);
printf("r: %x\n", b);
return 0;
}
然后只在这些值到颜色堵塞,并使用它。
2
我想出了下面的代码,它匹配我想做的很好的事情。它可以被修改以提供更大范围的值。守则相当粗糙,但我认为你明白了。
public int getColorFromProgress(int progress)
{
int color1 = 0, color2 = 0, color = 0;
float p = (float)progress;
if(progress <= 10) /* black to red */
{
color1 = 0;
color2 = 0xff0000;
p = progress/10.0f;
}
else if(progress <= 25) /* red to yellow */
{
color1 = 0xff0000;
color2 = 0xffff00;
p = (progress - 10)/15.0f;
}
else if(progress <= 40) /* yellow to lime green */
{
color1 = 0xffff00;
color2 = 0x00ff00;
p = (progress - 25)/15.0f;
}
else if(progress <= 55) /* lime green to aqua */
{
color1 = 0x00ff00;
color2 = 0x00ffff;
p = (progress - 40)/15.0f;
}
else if(progress <= 70) /* aqua to blue */
{
color1 = 0x00ffff;
color2 = 0x0000ff;
p = (progress - 55)/15.0f;
}
else if(progress <= 90) /* blue to fuchsia */
{
color1 = 0x0000ff;
color2 = 0x00ff00;
p = (progress - 70)/20.0f;
}
else if(progress <= 98) /* fuchsia to white */
{
color1 = 0x00ff00;
color2 = 0xff00ff;
p = (progress - 90)/8.0f;
}
else
{
color1 = 0xffffff;
color2 = 0xffffff;
p = 1.0f;
}
int r1 = (color1 >> 16) & 0xff;
int r2 = (color2 >> 16) & 0xff;
int g1 = (color1 >> 8) & 0xff;
int g2 = (color2 >> 8) & 0xff;
int b1 = (color1) & 0xff;
int b2 = (color2) & 0xff;
int r3 = (int) ((r2 * p) + (r1 * (1.0f-p)));
int g3 = (int) (g2 * p + g1 * (1.0f-p));
int b3 = (int) (b2 * p + b1 * (1.0f-p));
color = r3 << 16 | g3 << 8 | b3;
return color;
}
相关问题
- 1. jQuery UI的滑块与3个处理器:更改一个只有处理器的颜色和colorise滑杆
- 2. 拾色器
- 3. 算法拾色器
- 4. jQuery UI拾色器
- 5. AutoCAD VB.Net拾色器
- 6. Twitter Bootstrap - 拾色器
- 7. zkoss拾色器CE
- 8. 拾取器不工作时,它只有一个值
- 9. 为什么只有一个我的JQuery滑块工作
- 10. 我有一个需要计数器滑块的jQuery旋转木马/滑块
- 11. 没有按钮的滑块 - 上/下一个li触发滑块
- 12. 隐藏Twitter Bootstrap左右箭头(如果只有一个滑块)
- 13. 有一个简单的JavaScript滑块吗?
- 14. 与farbtastic拾色器需要
- 15. 位置ExtJs拾色器
- 16. Qt,拾色器对话框?
- 17. 机器人拾起只
- 18. 的Javascript颜色滑块
- 19. Nivo滑块 - 在一个网页上的两个滑块
- 20. 给现有的JS滑块添加一个定时器
- 21. CSS3只有滑块连续旋转
- 22. jQuery的滑块的颜色选择器/滑块以更改背景
- 23. jQuery - 一个页面上的多个内容滑块,一次只移动一个
- 24. 有没有什么办法让这个滑块只滑动33%而不是100%
- 25. 在iOS中,有没有用于拾色器的标准机制?
- 26. 当你滑动它时,改变一个jQuery UI滑块的颜色
- 27. 颜色只有div的一个边缘?
- 28. 引导旋转木马滑块 - 只移动滑块,没有过多的内容
- 29. 轮拾色器jQuery的修改
- 30. 如何实现的Java Swing拾色器
然而,这对于用户挑选颜色非常困难,因为有很多可能的值。 – lostdev 2013-02-10 06:11:00