2014-10-22 4 views
0

Я хочу генерировать/рандомизировать цвет, а затем я хочу второй, который близок к сгенерированному. Это, как я генерировать цвета FTM:Android генерировать небольшие различия цвета RGB

Paint colors = new Paint(); 

int red = ran.nextInt(256-100)+100; 
int green = ran.nextInt(256-100)+100; 
int blue = ran.nextInt(256-100)+100; 

colors.setARGB(255, red, green, blue); 

, а позже 2-й цвет, который я генерировать так:

switch (ran.nextInt(3)) { 
     case 0: 
      red = red - (40 - level); 
      break; 
     case 1: 
      green = green - (40 - level); 
      break; 
     default: 
      blue = blue - (40-level); 
      break; 
     } 

Проблема заключается в том, что она работает в некоторых случаях и иногда это может дать мне 2-й цвет, который выключен милями. Есть ли другой, лучший и простой способ генерации этих цветов?

уш

+2

есть другие цветовые пространства, такие как hsv, которые лучше подходят для манипуляции для создания «похожих» цветов. –

+0

@MarcB +1 ... и tinyColor.js легко преобразуются между rgb и hsl: http://bgrins.github.io/TinyColor/docs/tinycolor.html – markE

ответ

1

Вам нужно создать реальное случайное число от 0 до 3:

Random ran = new Random(); 
int max = 3; 
int min = 0; 
int randomNum = ran.nextInt((max - min) + 1) + min; 

switch (randomNum) { 
     case 0: 
      red = red - (40 - level); 
      break; 
     case 1: 
      green = green - (40 - level); 
      break; 
     default: 
      blue = blue - (40-level); 
      break; 
     } 
0

Вы можете использовать java.awt.Color.brighter() и Color.darker().