Функция RGB (Visual Basic для приложений)
Twitter LinkedIn Facebook Адрес электронной почты
- Статья
Возвращает целое число типа Long, представляющее значение цвета RGB.
Синтаксис
RGB(красный, зеленый, синий)
Синтаксис функции RGB состоит из следующих именованных аргументов:
Part | Описание |
---|---|
Красного | Обязательный аргумент; Variant (Integer). Число в диапазоне от 0 до 255 включительно, которое представляет красный компонент цвета. |
Зеленый | Обязательный аргумент; Variant (Integer). Число в диапазоне от 0 до 255 включительно, которое представляет зеленый компонент цвета. |
Синий | Обязательный аргумент; Variant (Integer). Число в диапазоне от 0 до 255 включительно, которое представляет синий компонент цвета. |
Предполагается, что значение для любого аргумента в RGB, превышающее 255, должно быть 255.
В следующей таблице перечислены некоторые стандартные цвета и значения красного, зеленого и синего, которые они включают:
Цвет | Значение красного | Значение зеленого | Значение синего |
---|---|---|---|
Черный | 0 | 0 | 0 |
Синий | 0 | 0 | 255 |
Зеленый | 0 | 255 | 0 |
Cyan | 255 | 255 | |
Красный | 255 | 0 | 0 |
Пурпурный | 255 | 0 | 255 |
Желтый | 255 | 255 | 0 |
Белый | 255 | 255 | 255 |
Примечание.
Возвращаемые этой функцией значения цвета RGB не совместимы со значениями, используемыми операционной системой Macintosh. Они могут использоваться в контексте приложений Microsoft для Macintosh, но не должны использоваться при непосредственной передачи изменений цвета в операционную систему Macintosh.
Пример
В этом примере показано, как функция RGB используется, чтобы вернуть целое число, представляющее значение цвета RGB. Он используется для тех методов и свойств приложения, которые принимают спецификацию цвета. Объект MyObject и его свойство используются только в целях иллюстрации. Если MyObject не существует или у него нет свойства Color , возникает ошибка.
Dim Red, I, RGBValue, MyObject Red = RGB(255, 0, 0) ' Return the value for Red. I = 75 ' Initialize offset. RGBValue = RGB(I, 64 + I, 128 + I) ' Same as RGB(75, 139, 203). MyObject.Color = RGB(255, 0, 0) ' Set the Color property of MyObject to Red.
См. также
- Константы цвета
- Функции (Visual Basic для приложений)
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
RGB, HSL, LCH и вот это вот всё / Хабр
RGB какой-то отстой.
Модель RGB, мало чем отличающаяся от ASCII, адресов памяти и наличия 86 400 секунд в сутках, является одним из тех инструментов, которые немного упрощают программирование, до поры до времени.
Теоретически RGB — это группа цветовых пространств, которая позволяет указать дисплею, какое напряжение требуется каждому субпикселю. Однако на практике теперь у нас есть телефоны с дисплеями, которые позволяют отображать более 100% красного цвета, что является новым типом красного цвета, называемым суперкрасным. У нас есть другие дисплеи, в которых синего в два раза больше, чем красного или зелёного. И, вероятно, уже некоторое время ваши значения RGB не соответствуют напряжениям дисплея.
RGB сложно осмысливать рационально. Красный, зелёный и синий источники света ведут себя не так, как мы привыкли — вы можете видеть отдельные цвета вблизи, но по мере удаления они смешиваются вместе, и вы начинаете видеть только один цвет. С достаточно большого расстояния вы не сможете убедить свой разум в том, что существует три источника света. В настоящее время вы смотрите на миллионы крошечных массивов из 3 источников света, и всё же эффект настолько убедителен, что вы почти никогда не задумываетесь об этом.
Наконец, RGB трудно настраивать. Если вы начнёте с чёрного, вы можете увеличить количество “red” (красного) в палитре цветов RGB, что сделает всё более красным. Всё идет нормально. Затем вы начинаете увеличивать “green” (зелёный), и вы получаете… жёлтый? Это не очень интуитивно понятное цветовое пространство для навигации. Есть и другие представления цветов, которые легче поддаются изменению.
Цвета на годы
У меня есть личное приложение, где мне необходимо показать график за несколько лет. Каждому году на графике требуется другой цвет, поэтому каждый новый год я захожу в код, нахожу новый красивый цвет для нового года и развертываю приложение. Сколько лет я буду этим заниматься, пока не найду алгоритм, с помощью которого можно это автоматизировать?
Мне необходимы некоторые цвета, которые:
а) произвольны при генерации кода;
б) красиво выглядят;
в) определяются исключительно целым числом года.
Нам требуется реализовать такую функцию:
func color(for year: Int) -> Color
RGB действительно может удовлетворить только первому из моих критериев — эта модель может создавать случайные цвета со случайными числами:
Color(red: .random(in: 0..<1), blue: .random(in: 0..<1), green: .random(in: 0..<1))
К сожалению, цвета, сгенерированные таким образом, выглядят очень плохо. Они часто получаются грязными и румяными, а создание более чем одного цвета не сопровождается каким-либо узором или структурой.
Цвета повсюду.Это структурная проблема с RGB. RGB фокусируется на том, как создается цвет, а не на том, как он воспринимается.
К счастью, решение этой проблемы хорошо задокументировано. Есть несколько сообщений в блогах и постах (предупреждение: JavaScript), в которых излагается подход. Идея такова: используя цветовое пространство, основанное на оттенках, такое как HSL, вы можете сохранять два параметра постоянными saturation и lightness (насыщенность и яркость) и изменять только оттенок, давая вам несколько цветов, которые живут в одном и том же “family” (семействе).
(Существуют тонкие различия между HSL, HSB, HSV и HWB, но чередование оттенков в основном одинаково во всех цветовых моделях, и любая из них будет хорошо работать с этой техникой.)
Например, использование значения 0.8 для saturation и lightness дает хорошие пастельные тона:
Color(hue: .random(in: 0..<360), saturation: 0.8, lightness: 0.8)
Вы можете играть с этой палитрой цветов; переместите ползунок “hue” (оттенок), чтобы увидеть множество цветов в этом семействе.
С другой стороны, значения 0.6 для saturation и 0.5 для lightness дают более насыщенные цвета:
Color(hue: .random(in: 0..<360), saturation: 0.6, lightness: 0.5)
Эта палитра цветов показывает примеры этих цветов.
Проницательные читатели заметят, что в то время как собственные API-интерфейсы Apple принимают число от 0 до 1, этот фальшивый инициализатор, который я сделал, ожидает оттенок от 0 до 360. Я нахожу это более наглядным, потому что это значение представляет собой некоторое количество градусов. Здесь есть физическая аналогия с кругом оттенков. Круги зацикливаются сами на себе, поэтому 3590 в основном того же цвета, что и 10. Это позволяет вам выйти за пределы круга оттенков и изменить его на 3600, чтобы вернуться к разумному цвету.
Это позволяет нам реализовать большую часть нашей функции color(for year: Int):
func color(for year: Int) -> Color { let spacing = ... return Color(hue: (year * spacing) % 360, saturation: 0. 8, lightness: 0.5) }
Интервал представляет собой количество градусов, которое необходимо пройти по кругу оттенков каждый раз, когда нам необходимо выбрать следующий цвет.
Какое оптимальное число выбрать здесь?
Вращение в пространстве оттенков
Если мы сделаем этот угол слишком близким к нулю, цвета будут располагаться слишком близко друг к другу на круге оттенков, что сделает их слишком похожими. Однако, если мы сделаем это слишком близко к значению 3600 (полный оборот), после изменения градусов на 360 они всё равно будут слишком похожи, за исключением того, что они будут идти назад по кругу оттенков. Может быть, мы хотим попробовать 1800 ? Это делает все остальные цвета абсолютно одинаковыми, так что это тоже не совсем правильно.
На самом деле, любое вращение, которое равномерно делится на 3600, через некоторое время приведет к повторению. А у 360 много факторов!
Одно из решений состоит в том, чтобы разложить компоненты на 360 значений, разделенных на количество лет, которые у нас есть, и тогда цвета будут меняться каждый раз, когда наступает новый год. Это создает радугу, которая, хотя и выглядит красиво, не имеет случайного представления, к которому я стремлюсь.
Однако есть лучший способ сделать это, и ответ содержится в видео на YouTube, которое я смотрел более 10 лет назад. Замечательный Ви Харт (Vi Hart) опубликовал серию видеороликов (раз, два, три) о том, как растениям необходимо отрастить свои новые листья таким образом, чтобы они не были заблокированы верхними листьями, что позволяет им получать максимум солнечного света. Во втором видео из этой серии есть соответствующий бит.
Число градусов вокруг стебля, из которого растение решает вырастить свой следующий лист — это именно то число, которое мы ищем. Это некоторый поворот, на который мы получим неперекрывающиеся листья — я имею в виду цвета.
Поскольку любое рациональное число приведет к повторяющимся цветам или перекрывающимся листьям, она ищет иррациональное число. В идеале “самое” иррациональное число. Она находит его в ϕ, это примерно 1.618. Нам необходимо проходить 1/1. 618 часть круга оттенков каждый раз, когда нам требуется новый цвет, и это даст нам необходимые цвета.
Если цвета вам не нравятся, вы можете дополнительно повернуть, добавив фазовый сдвиг в уравнение:
func color(for year: Int) -> Color { let spacing = 360/1.618 return Color(hue: 300 + (year * spacing) % 360, saturation: 0.8, lightness: 0.5) }
Эта функция соответствует нашим критериям, цвета, которые получаются из неё:
а) произвольны;
б) выглядят неплохо;
в) определяются исключительно годом.
Следующий шаг
Если ваша единственная цель — несколько простых цветов для прототипа или побочного проекта, то того, что я рассказал до сих пор, будет достаточно. Но если вы хотите использовать это в более серьёзных и масштабных приложениях, вы можете сделать ещё один шаг.
Цветовая модель HSL имеет несколько серьезных недостатков. Она, как и RGB, была разработана для простоты вычислений, а не для точности базовых цветов. В частности, при повороте значения оттенка (что мы и делаем с помощью этой техники) вы обнаружите, что некоторые оттенки окрашены намного светлее, чем другие, даже если saturation и lightness остаются постоянными. Эти цвета выглядят светлее, хотя технически они являются одной и той же “lightness”.
Цветовое пространство LCH (luminance, chroma, hue) решает эту проблему. Насколько я могу судить, это золотой стандарт цветов на дисплее. Это даёт вам единообразие восприятия, что позволяет вам поворачивать оттенок и получать цвета, которые даже больше похожи друг на друга, чем вы могли бы получить с помощью HSL. Это также даёт некоторые преимущества, когда дело доходит до контраста при чтении текста.
На самом деле, если вы внимательно посмотрите на приведённые выше цвета (которые представляют собой цвета для 2015–2023 годов с использованием нашего алгоритма), этот зелёный лайм выглядит немного приглушенным по сравнению с его фиолетовым соседом.
Здесь вы можете поиграть с палитрой цветов LCH. Чтобы заставить LCH работать с UIColor, вы можете использовать эти четыре полезных принципа.
Использование LCH для создания моих цветов с помощью описанной выше техники вращения оттенков дало красивые цвета.
func color(for year: Int) -> Color { let spacing = 360/1.618 return Color(luminance: 0.7, chroma: 120, hue: 300 + (year * spacing) % 360) }
Этот браузер не поддерживает цвет LCH. Попробуйте Safari или мобильную версию Safari 15 или выше.
Все эти цвета имеют одинаковую lightness, и они отлично смотрятся для чего-то полностью процедурно сгенерированного. Они яркие, однородные и замечательные.
Модель, которую вы выбираете для жизни, создает ограничения, которые вы, возможно, не предполагали ограничивать. Любой цвет из любого из этих цветовых пространств может быть (более или менее) переведён в любое другое цветовое пространство с небольшой разницей. Поэтому цвета, которые мы получили в итоге, могут быть записаны в терминах красных, зеленых и синих значений (опять же, здесь махнув немного рукой). Но хотя RGB может представлять эти цвета, это не означает, что вы можете легко перемещаться по пространству таким образом, чтобы получить цвета, которые хорошо смотрятся вместе. Выбор правильного цветового пространства для начала делает проблему, по крайней мере, решаемой.
Поправимо, но до сих пор не решено. Эти произвольные красивые цвета могут быть сгенерированы с помощью процесса, стохастически открытого эволюцией, открытого учеными в 1830 году, и применённого на практике с использованием надёжного набора веб-стандартов, которые позволяют мне показать их вам в браузере.
В конце концов, стремление растений к солнечному свету стало ключом к созданию приятных цветов для моей маленькой диаграммы.
Руководство для кодера по цветам — перестаньте использовать RGB и используйте вместо него это | Джейк Краевски
Вместо того, чтобы становиться экспертом в теории цвета, вот как вы можете легко управлять цветами, как дизайнер.
Опубликовано в
·
Чтение: 6 мин.
·
11 сентября 2020 г.
Apple iPad 2 пикселя под микроскопом. Взято с Anandtech.com Вводная викторина: Опишите без обмана, какой цвет может представлять этот шестнадцатеричный код: #03A87C
? Вот подсказка : RGB(3, 168, 124)
(это вообще помогло?)
— Ответ: ¡uoʇʇnq ʍoןןoɟ ǝɥʇ ɟo uǝǝɹƃ ǝɥʇ s,ʇI
Свет сочетается по-разному . Красный и зеленый дают желтый, зеленый и синий — голубой, а красный и синий — пурпурный. Трудно предсказать, какие цвета вы получите, и с легкостью управлять ими, поэтому лучше не программировать и не проектировать в цветовом пространстве RGB.То, что вы передаете своей машине, — это интенсивность красного, зеленого и синего света на пиксель на дисплее RGB. Если вы не являетесь экспертом в аддитивном смешивании цветов, вы, вероятно, не сможете предсказать, какие комбинации цветов дадут точный цвет, который вы ищете. В самом общем смысле комбинации этих трех основных цветов используются для создания более 16 миллионов цветов, которые мы обычно видим на наших дисплеях.
Об этой серии
В этой серии я раскрою тайну выбора правильных цветов для работы. Цель состоит в том, чтобы дать вам практические инструменты, чтобы все выглядело так, как будто вы наняли дизайнера для выбора цветовых схем. Когда ваши проекты выглядят хорошо, мы все выигрываем!
- Часть 1: Не используйте RGB, если вы не являетесь экспертом в теории цвета
- Часть 2: Как украсть цветовую палитру у природы.
Какого черта?
Вот правило, которое нужно выучить, чтобы правильно его отклонять (если вы знаете, что такое шестнадцатеричные цветовые коды, переходите к следующему разделу) .
Шестнадцатеричные «цифры» представляют собой 16 значений от 0 до 15, где вместо добавления «1» к разряду 10 при передаче числа 9 мы продолжаем считать выше разряда 1, как если бы было шесть дополнительных цифры , которые представляли числа 10–15. Поскольку эти числа не встроены в наши клавиатуры, в шестнадцатеричном формате используется просто 9. 0015 a =10, b =11, c =12, d =13, e =14 и f =15 . Это дает нам 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f.
Шестнадцатеричный формат позволяет нам представлять трехзначные значения, используя только 2 цифры. Например: 255 становится FF.
Определение цвета с помощью шестнадцатеричного числа
Цвета создаются путем смешивания каналов. Когда вы видите цвет, записанный в шестнадцатеричном формате (например, #AABBCC
), то вы видите интенсивность каналов для красного ( AA
), зеленого ( BB
) и синего ( CC
) пикселей, разделенных от 0–255 ( 00–FF
) шагов. Ноль «выключен», и есть 255 различных различий интенсивности вплоть до полной яркости.
Это количество вариаций является источником 16 миллионов+ цветных дисплеев, поскольку существует 255 × 255 × 255 = 16 581 375 различных комбинаций, которые вы можете создать, изменяя интенсивность каждого канала или субпикселя.
Что случилось с предсказуемостью?
На изображениях ниже кнопка слева получается аддитивной смесью трех цветных кнопок справа. Кто бы знал, что темно-красный, ярко-зеленый и интенсивно-синий приведут к светло-зимнему цвету? И в этом заключается проблема с RGB. Это совсем не интуитивно понятно. Вы не можете предсказать, какие цвета были смешаны, просто взглянув на конечный цвет, и вы не можете сказать, какой конечный цвет вы получите, просто взглянув на основные цвета.
Не интуитивно понятно, какие сочетания цветов следует использовать для получения цвета слева. На самом деле это результат аддитивного смешивания красной, зеленой и синей версий справа. Смешивание цветов с использованием RGB. Аддитивное смешивание трех цветов дает средний цвет. С теорией аддитивного света #FFFFFF
или RGB(255, 255, 255)
(полная интенсивность по всем каналам) дает нам чистый белый свет, а #000000
или RGB(0, 0, 0)
(все каналы выключены), создает черноту.
Теперь, зная эти основы RGB, должно быть легко понять, что #FF0000
— чисто красный, #00FF00
— чисто зеленый, а #0000FF
— чисто синий.
Единственный, последний вывод заключается в том, что всякий раз, когда все каналы имеют одинаковую интенсивность (за исключением черного и белого, упомянутых ранее), конечным результатом является один из 253 оттенков серого (например, #333333
— темно-серый, #C3C3C3
светло-серый).
Если вы хотите облегчить себе жизнь и иметь возможность выбирать цвета, которые хорошо смотрятся вместе, выберите HSL или Оттенок , Насыщенность , Яркость . Период . Конец статьи… (Ну, ладно. Поясню еще немного).
Оттенок — это цвет цветность , о котором мы говорим: краснота, зелень, голубизна, оранжеватость, фуксианность, розоватость и т. д. От 0 до 360 градусов есть круг, который начинается с красного, заканчивается красным и имеет все цвета радуги между ними.
Цветовой круг оттенка. Все оттенки выбираются из этого колеса и отображаются с полной яркостью и насыщенностью.Насыщенность — полнота цвета от серого до полностью насыщенного. Это шкала от 0% до 100% насыщения. Чем менее насыщенный, тем бледнее оттенок, чем насыщеннее, тем интенсивнее оттенок.
Яркость определяет, насколько близким к черному или полной яркости должен быть цвет, также по шкале от 0% до 100%. При яркости 100% у вас белый цвет, при 0% — черный.
Это несложно. На самом деле это должно быть просто , как .
Как использовать эту информацию
Начиная со всех значений, установленных на 0, если вы отрегулируете только яркость, вот что вы получите.
Регулировка яркости без цвета создает оттенки более светлого и темного серого.Обратите внимание, что для яркости 0 не имеет значения, какой у вас оттенок и насыщенность, у вас будет полностью черный цвет без света.
Теперь мы выберем третью кнопку сверху и увеличим насыщенность с 0 до 89.. Если Hue по-прежнему установлен на 0, мы получаем довольно интенсивный, довольно яркий красный цвет. Когда мы настраиваем только оттенок, сохраняя яркость и насыщенность одинаковыми, у нас есть 360 различных оттенков для игры.
Добавление насыщенности к одному из серых блоков выше. Регулировка оттенка изменяет этот цвет.Принимая те же самые значения оттенка, если мы отрегулируем только насыщенность, мы получим 100 более мягких или более ярких вариаций каждого оттенка. Здесь они менее интенсивные, слегка приглушенные версии вышеуказанных цветов. У них есть мягче на ощупь. Чем ближе насыщенность к 0, тем более бесцветными или серыми они будут выглядеть.
Регулировка насыщенности цветов создает более приглушенные или пастельные или более смелые и интенсивные цвета.Снова используя нашу третью кнопку, если мы вместе внесем небольшие корректировки в оттенок, насыщенность и яркость, мы сможем создать семейство стилей кнопок, которые можно использовать для одного и того же элемента призыва к действию:
Играем со всеми тремя факторы в небольшом диапазоне могут создать семейство стилей для конкретного интерфейса.Как видите, принципы, лежащие в основе HSL, позволяют вам детально контролировать каждый аспект вашего выбора цвета, не полагаясь на дизайнеров или предустановленные таблицы цветов. Самое главное, результаты несколько предсказуемы! Если вы хотите, чтобы красный был ярче, измените яркость, если хотите, чтобы он был мягче, понизьте насыщенность, добавьте больше синего? Найдите оттенок, который вы хотите, чтобы он был, и так далее и тому подобное.
Если у вас есть возможность, нет причин выбирать RGB, а не HSL, если только вам не нужен низкоуровневый контроль над интенсивностью света на уровне субпикселей. В противном случае имеет смысл настраивать цвета так, чтобы они были сосредоточены на человеческом восприятии, а не на способах, которые соответствуют возможностям аппаратного дисплея.
Далее в этой серии
Позже в этой серии я объясню, как создавать цветовые темы с базовыми цветами, цветами выделения, акцента и тона, которые можно использовать для оформления целых приложений или веб-страниц. черный в мире, какие цветовые сочетания не использовать и многое другое.
Удачной раскраски!
Коллектив UX жертвует 1 доллар США за каждую статью, опубликованную на нашей платформе. Эта история помогла Bay Area Black Designers: профессиональному сообществу разработчиков чернокожих, которые занимаются цифровыми дизайнерами и исследователями в районе залива Сан-Франциско. Объединяясь в сообщество, участники делятся вдохновением, связью, наставничеством, профессиональным развитием, ресурсами, обратной связью, поддержкой и устойчивостью. Молчание против системного расизма — не вариант. Создайте дизайнерское сообщество, в которое вы верите.Функция RGB (Visual Basic для приложений)
Редактировать
Твиттер LinkedIn Фейсбук Электронная почта
- Статья
Возвращает целое длинное число, представляющее значение цвета RGB.
Синтаксис
RGB ( красный , зеленый , синий )
Синтаксис функции RGB имеет следующие именованные аргументы:
Часть | Описание |
---|---|
красный | Обязательно; Вариант ( Целое число ). Число в диапазоне от 0 до 255 включительно, представляющее красную составляющую цвета. |
зеленый | Обязательно; Вариант ( Целое число ). Число в диапазоне от 0 до 255 включительно, представляющее зеленый компонент цвета. |
синий | Обязательно; Вариант ( Целое число ). Число в диапазоне от 0 до 255 включительно, представляющее синюю составляющую цвета. |
Методы и свойства приложений, которые принимают спецификацию цвета, ожидают, что эта спецификация будет числом, представляющим значение цвета RGB. Значение цвета RGB задает относительную интенсивность красного, зеленого и синего цветов для отображения определенного цвета.
Значение любого аргумента RGB , превышающее 255, считается равным 255.
В следующей таблице перечислены некоторые стандартные цвета и значения красного, зеленого и синего, которые они включают:
Цвет | Красное значение | Значение зеленого | Значение синего цвета |
---|---|---|---|
Черный | 0 | 0 | 0 |
Синий | 0 | 0 | 255 |
Зеленый | 0 | 255 | 0 |
Голубой | 0 | 255 | 255 |
Красный | 255 | 0 | 0 |
Пурпурный | 255 | 0 | 255 |
Желтый | 255 | 255 | 0 |
Белый | 255 | 255 | 255 |
Примечание
Цветовые значения RGB, возвращаемые этой функцией, несовместимы со значениями, используемыми операционной системой Macintosh.