Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为canvas.drawColor生成随机数的随机颜色_Java_Android_Android Canvas - Fatal编程技术网

Java 如何为canvas.drawColor生成随机数的随机颜色

Java 如何为canvas.drawColor生成随机数的随机颜色,java,android,android-canvas,Java,Android,Android Canvas,我还是android开发的新手,到目前为止我处理的所有应用程序都与图形无关。现在,我正在制作一个应用程序,显示一个图形,准确地说是饼图,我制作这个程序时没有任何第三方LIB。这是我遵循的教程 现在的问题是,我将用于构建图形的数据是动态的,因此要为每个项目分配图形的颜色,我需要为canvas.drawColor生成一些随机颜色。颜色的数量当然取决于我在运行时确定的动态数据,并且还需要生成颜色值。 如果生成的颜色是突出的鲜艳颜色也会很好 我从来没有处理过画布,你知道怎么做吗?示例代码将不胜感激 谢谢

我还是android开发的新手,到目前为止我处理的所有应用程序都与图形无关。现在,我正在制作一个应用程序,显示一个图形,准确地说是饼图,我制作这个程序时没有任何第三方LIB。这是我遵循的教程

现在的问题是,我将用于构建图形的数据是动态的,因此要为每个项目分配图形的颜色,我需要为canvas.drawColor生成一些随机颜色。颜色的数量当然取决于我在运行时确定的动态数据,并且还需要生成颜色值。 如果生成的颜色是突出的鲜艳颜色也会很好

我从来没有处理过画布,你知道怎么做吗?示例代码将不胜感激


谢谢

在运行时很难获得不同且有用的颜色。最好的方法是不要使用太多的随机性,而是让20种固定颜色组成一个非常清晰的数组,并使用X第一个颜色作为数据。如果您需要更多,则可以使用随机RGB值的真实随机颜色:

Random r = new Random();
Color c = new Color( r.nextInt(255), r.nextInt(255), r.nextInt(255) );

在运行时很难获得不同且有用的颜色。最好的方法是不要使用太多的随机性,而是让20种固定颜色组成一个非常清晰的数组,并使用X第一个颜色作为数据。如果您需要更多,则可以使用随机RGB值的真实随机颜色:

Random r = new Random();
Color c = new Color( r.nextInt(255), r.nextInt(255), r.nextInt(255) );

我不会使用完全随机的颜色。你会得到完全不同的饱和度和亮度,看起来很难看

您可以固定饱和度(为鲜艳的颜色选择一个较高的值)和亮度,然后选择一个随机色调值,但您可能会遇到获得两个几乎相同颜色的连续饼图切片的风险

我将计算一组分散的色调值,如回答此问题时所示:

将答案转载如下


import java.awt.*;
公共类TestComponent扩展了JPanel{
int numCols=6;
公共空间涂料(图g){
float h=0,dh=(float)getHeight()/numCols;
颜色[]cols=获取不同的颜色(numCols);
对于(int i=0;i


如果你需要30多种颜色,你当然可以改变亮度,也许还可以改变饱和度,比如10种深色、10种中音和10种亮色。

我不会只使用完全随机的颜色。你会得到完全不同的饱和度和亮度,看起来很难看

您可以固定饱和度(为鲜艳的颜色选择一个较高的值)和亮度,然后选择一个随机色调值,但您可能会遇到获得两个几乎相同颜色的连续饼图切片的风险

我将计算一组分散的色调值,如回答此问题时所示:

将答案转载如下


import java.awt.*;
公共类TestComponent扩展了JPanel{
int numCols=6;
公共空间涂料(图g){
float h=0,dh=(float)getHeight()/numCols;
颜色[]cols=获取不同的颜色(numCols);
对于(int i=0;i


如果您需要30多种颜色,您当然可以更改亮度,也可以更改饱和度,例如,有10种深色、10种中间色和10种亮色。

您应该为每个颜色分量随机设置一个浮点:

Random rand = new Random();
float r = rand.nextFloat();
float g = rand.nextFloat();
float b = rand.nextFloat();
因为您想要鲜艳的颜色,所以可以使用
Color.brighter()
方法

Color c = new Color(r, g, b);
c = c.brighter();   
否则,可以设置阈值,使颜色值具有最小值(越高越亮):


这将确保颜色鲜艳。

您应该为每个颜色组件随机设置一个浮动:

Random rand = new Random();
float r = rand.nextFloat();
float g = rand.nextFloat();
float b = rand.nextFloat();
因为您想要鲜艳的颜色,所以可以使用
Color.brighter()
方法

Color c = new Color(r, g, b);
c = c.brighter();   
否则,可以设置阈值,使颜色值具有最小值(越高越亮):


这将确保色彩鲜艳。

ah ok,因此使用rgb值。下面的教程使用int-colors[]={-6777216,-16776961,-16711681,-12303292,-7829368};你能告诉我这是什么类型的值吗?它看起来像rgb代码
http://www.ceveni.com/2009/08/set-rgb-color-codes-for-android-and-rgb.html
,您可能可以使用java转换它们。如果我是你,我会使用单独的部件。如果您愿意,还可以定义0-255范围内的颜色。啊,好的,所以这使用rgb值。下面的教程使用int-colors[]={-6777216,-16776961,-16711681,-12303292,-7829368};你能告诉我这是什么类型的值吗?它看起来像rgb代码
http://www.ceveni.com/2009/08/set-rgb-color-codes-for-android-and-rgb.html