Создание пастельных цветов - PullRequest
3 голосов
/ 09 декабря 2010

Мне нужно, чтобы создать случайный цвет.Но мне нужны пстелые.Не слишком темный, не слишком яркий.

Я могу генерировать цвета следующим образом:

color = (1..3).to_a.map{ ( c = rand(255).to_s(16) ).size < 2 ? "0#{c}" : c }.to_s

Но он вернет цвета из всей палитры.

Ответы [ 2 ]

2 голосов
/ 09 декабря 2010

Попробуйте:

start_color = 128 # minimal color amount
total_offset = 64 # sum of individual color offsets above the minimal amount
'#' +
  [0, rand(total_offset), rand(total_offset), total_offset].sort.each_cons(2).map{|a,b|
    "%02x" % (start_color+b-a)
  }.join

На самом деле, вот крошечное приложение Sinatra, с которым вы можете поиграть и мгновенно увидеть результаты:

require 'sinatra'

def get_pastel start_color, total_offset
  '#' +
    [0, rand(total_offset), rand(total_offset), total_offset].sort.each_cons(2).map{|a,b|
      "%02x" % (start_color+b-a)
    }.join
end

get '/:start_color/:total_offset' do |start_color, total_offset|
  (0..20).map{c = get_pastel(start_color.to_i, total_offset.to_i)
    "<span style='background-color:#{c}'>#{c}</span>\n"
  }.join
end

Затем запустите браузер и посмотрите, как оновыглядит:

http://localhost:4567/192/64

http://localhost:4567/128/128

;)

1 голос
/ 09 декабря 2010

Это может дать вам что-то полезное:

colour_range = 128
colour_brightness = 64
color = (1..3).to_a.map{ ( c = rand(colour_range)+colour_brightness.to_s(16) ).size < 2 ? "0#{c}" : c }.to_s

Я думаю, что это ограничит вас средним насыщением, средним цветом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...