我写下了两种方法来自动选择N种不同的颜色.它的工作原理是在RGB立方体上定义分段线性函数.这样做的好处是,如果这是你想要的,你也可以得到一个渐进的比例,但是当N变大时,颜色可以开始看起来相似.我还可以想象将RGB立方体均匀地细分为格子然后绘制点.有谁知道其他任何方法?我排除了定义一个列表然后只是循环通过它.我还应该说我一般不关心他们是否发生冲突或看起来不好看,他们只需要在视觉上截然不同.
public static List<Color> pick(int num) {
List<Color> colors = new ArrayList<Color>();
if (num < 2)
return colors;
float dx = 1.0f / (float) (num - 1);
for (int i = 0; i < num; i++) {
colors.add(get(i * dx));
}
return colors;
}
public static Color get(float x) {
float r = 0.0f;
float g = 0.0f;
float b = 1.0f;
if (x >= 0.0f && x < 0.2f) {
x = x / 0.2f;
r = 0.0f;
g …Run Code Online (Sandbox Code Playgroud) 我想创建一个接受任何旧字符串的函数(通常是一个单词),并从中以某种方式在#000000和之间生成十六进制值#FFFFFF,因此我可以将它用作HTML元素的颜色.
甚至可能是简写的十六进制值(例如:),#FFF如果那不那么复杂的话.事实上,来自"网页安全"调色板的颜色将是理想的选择.
我有和旧的(ish)C#方法我写了一个数字并将其转换为任何基数:
string ConvertToBase(int number, char[] baseChars);
Run Code Online (Sandbox Code Playgroud)
它不是那么超级快速和整洁.在.NET中有没有一种很好的,已知的方法来实现这一点?
我在寻找的东西,让我使用任何基地要使用的字符的任意字符串.
这只允许碱基16,10,8和2:
Convert.ToString(1, x);
Run Code Online (Sandbox Code Playgroud)
我想利用它来利用数字,全部小写和全部大写字母来实现高基数.就像在这个线程中一样,但对于C#而不是JavaScript.
有谁知道在C#中这样做的好方法?
我这样生成一个随机颜色:
var random = new Random();
var color = String.Format("#{0:X6}", random.Next(0x1000000));
Run Code Online (Sandbox Code Playgroud)
如何排除比某个值更亮的颜色?
对于我的程序,我试图创建一个函数,它将生成一个颜色数组(每次应该是相同的,所以没有随机性),其中每种颜色与其他颜色有很大不同.
你为什么要问?好吧,因为用户可以向用户控件添加自定义项目,并且通过添加每个项目,项目应该与特定颜色相关联.
显然这会很糟糕:
Red
Dark Red
Light Red
Pink
Run Code Online (Sandbox Code Playgroud)
因为在视觉上所有这些在色彩和颜色上非常相似,并且用户将无法区分它们.理想情况下,函数会产生如下所示:
Red
Dark Green
Light Cyan
Orange
Run Code Online (Sandbox Code Playgroud)
在这种情况下,每种颜色与其他颜色大不相同,并且用户可以容易地在视觉上区分它们.
但是,我在提出一个执行此操作的算法时遇到了一些麻烦.我知道我想使用Color.FromArgb,但我不确定如何构造循环,其中每个项目与其他项目有很大不同,但每次运行该函数时都是相同的.模数运算符可能会有所帮助.我一直在使用不同的方法,但每个方法总是有一个颜色太过类似于数组中的另一种颜色.我想用循环来做这件事,但这似乎暗示了一种模式以及所有颜色之间的色调,色调或亮度的相似性.
我想我可以硬编码大量的值,但我真的不想...... = X.
好吧,如果您有任何想法,请告诉我!谢谢!!
colors ×5
c# ×3
.net ×1
algorithm ×1
base ×1
color-picker ×1
color-scheme ×1
graph ×1
hex ×1
int ×1
java ×1
javascript ×1
r ×1
string ×1