Ну, можно и такalibek писал(а):Почему бы не сделать набор подходящих цветов и не выбирать случайный индекс?
Почему?alibek писал(а):Случайный насыщенный цвет — это бессмыслица.
Sub Dither(vForm As Form)
Dim intLoop As Integer
vForm.DrawStyle = vbInsideSolid
vForm.DrawMode = vbCopyPen
vForm.ScaleMode = vbPixels
vForm.DrawWidth = 2
vForm.ScaleHeight = 256
For intLoop = 0 To 255
vForm.Line (0, intLoop)-(Screen.Width, intLoop - 1), _
RGB(RED, GREEN, BLUE - intLoop), B
Next intLoop
End Sub
Private Sub Form_Back_Color_Click() ' MENU
RED = Rnd * 250 / 3: GREEN = Rnd * 250 / 2: BLUE = 255
Dither Me
LabelKeyBoard.Caption = Str(RED) + Str(GREEN)
End Sub
arthur2 писал(а):Почему?
alibek писал(а):Это же очевидно.
Сформулируй частную задачу, где нужно получить случайный насыщенный цвет?
alibek писал(а):Сформулируй частную задачу, где нужно получить случайный насыщенный цвет?
arthur2 писал(а):Я не могу тебя понять: что я сформулировал не так?
Нужно, чтобы текст был с цветом, насыщенность которого от 0,8 до 1. Насыщенность выражается формулой S=1-min/max, где min и max - минимальное и максимальное значение из r, g и b.
1. Насыщенность знаем.
2. Получаем случайное значение max (ограничив значение снизу, чтобы цвет получился не слишком тёмным).
3. Зная насыщенность и max, получаем min.
4. Генерируем случайное число third между min и max.
5. Результатом будет RGB от min, max и third, перемешанных опять же случайным образом.
Именно это я хочу - чтобы на выходе был случайный цвет заданной насыщенности.Alec писал(а):а потом хочешь какие-то случайные значения перемешать каким-то случайным способом
Ага, но его я получаю случайным образом.Alec писал(а):V, в принципе, тоже - это max.
Min я могу получить уже не случайно. Теперь два цвета у меня уже есть. Третье число получаю как случайное между min и max. Все три цвета уже есть, их порядок внутри rgb - не важен, потому что всё равно получится заданная насыщенность.Alec писал(а):Выбирай случайное значение H от 0 до 359 и вычисляй по формулам R, G и B.
arthur2 писал(а):5. Результатом будет RGB от min, max и third, перемешанных опять же случайным образом.
Ну, видимо, я просто не очень внятно выразилсяAlec писал(а):Смутило действие
Antonariy писал(а):0.3*R+0.59*G+0.11*B
R = R_фона - R_текста
R = Abs(R_фона - R_текста)
Ну да, видимо... правда, фон всё время белый. Но на будующее - очень даже может пригодитсяMikle писал(а):Насколько понял, нужна не яркость, и не насыщенность, а контраст с цветом фона.
arthur2 писал(а):с насыщенностью и всё время белым фоном меня, вроде, тоже устраивает
Antonariy писал(а):иначе это пытка для глаз
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 86