Как сделать в pascal зеленый цвет тексту

Как получить зеленый цвет, смешивая краски

Как получить зелёный цвет и его оттенки смешивая краски? Классический зеленый – это результат смешивания синего и желтого. Другие цвета помогают создать оттенки зеленого. Фото.

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

Интенсивность цвета зависит качества красителей, а также от количества смешанных цветов: чем больше оттенков учувствует в формировании тона, тем тускнее в итоге получится цвет.
Показывая смешение на примере своих красок, я объясняю суть создания оттенка. Ваши красители могут дать другой подтон, так как изначально отличались подтоном коллера, вам стоит откорректировать с помощью пропорций или других основных цветов (белого, зеленого, синего, желтого, красного и черного).

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

Что бы получить средний зеленый цвет, вам понадобится желтый и синий, обычно в пропорции 1 к 1 или 1 к 1,5 в сторону желтого. Синий можно заменить голубым, если он есть, тогда оттенок зеленого будет светлее.

Как получить зеленый цвет, смешивая краски

Как получить зеленый цвет, смешивая краски

Яркость полученного цвета будет зависеть от чистоты (насыщенности) основных тонов: желтого и синего. Чем они интенсивнее, тем ярче будет зеленый цвет, однако, он всегда будет более тусклым, чем основные красители. Собственно, поэтому продаются наборы красок, включающие в себя уже этот оттенок.

Если желтый и синий являются первичными цветами, а зеленый – вторичным, то все последующие оттенки: темные (с добавлением черного или коричневого) и светлые (с добавлением белого) будут третичными, то есть еще более тусклыми, чем сам зеленый цвет.

Как получить желто-зеленый, смешивая краски

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

Как получить зеленый цвет, смешивая краски

Как получить сине-зеленый (изумрудный), смешивая краски

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

Как получить зеленый цвет, смешивая краски

Как получить темно-зеленый, смешивая краски

Смешивая основные краски, которые образуют зеленый, мы получаем средний или слегка темный тон, если в нем достаточно синего. Но иногда нужен глубокий, почти черный зеленый, который будет изображать лесные или травяные тени. Для этого в полученный основной оттенок добавляется черный.
Если добавить чёрный в средине-зеленый, то мы получим теплую, темную гамму. Увеличивая количества черного можно добиться очень тёмного, едва отличимого от черного цвет.

Как получить зеленый цвет, смешивая краски

Если добавить черный в сине-зеленый, то получим темную, холодную гамму, уходящую в черно-зеленый.

Как получить зеленый цвет, смешивая краски

Как получить оливковый и цвета хаки, смешивая краски

Огромный пласт сложных оливковых оттенков можно получить несколькими способами.
Первый способ – это смешать средне-зеленый и коричневый. В таком случае тона получатся приглушенными, пыльными с болотным подтоном. Это сумма нескольких цветов (желтого, синего, красного), поэтому все оттенки будут с серим, тусклым отливом.

Как получить зеленый цвет, смешивая краски

Второй способ – это смешать желтый с черным. Полученная краска будет иметь золотистый отлив, она будет более яркая, так как является суммой первичных оттенков.

Как получить зеленый цвет, смешивая краски

Как получить серо-зеленый, смешивая краски

Серо-зелеными чаще всего считают холодными оттенками зеленого, поэтому мы будем его делать из уже смешанного сине-зеленого цвета. То есть, как вторичный цвет, холодный зеленый смешиваем со сложный, вторичным коричневым и получаем пыльных серо-зеленый тон. Это позволит минимально затенить оттенок, по сравнению с добавлением черного или серого.
Как получить зеленый цвет, смешивая краски

Как получить светло-зеленый, смешивая краски

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

Как получить зеленый цвет, смешивая краски

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

Как получить мятный зеленый, смешивая краски

Мятный – это светлый, холодный зеленый и поэтому его стоит смешивать из сине-зеленого и белого тона, где белого будет значительное количество. Так при небольших количествах белого тон будет нефритовым, а сильное разбавление создаст эффект ментола.

Как получить зеленый цвет, смешивая краски

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

Таблица получения зеленых оттенков, смешивая его с разными тонами

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

Как получить зеленый цвет, смешивая краски

Где в центре основная краска для смешивания. Первый круг — оттенки для смешивание с основной краской, второй круг — это то что получилось при смешивании зеленой краски и одного рядом стоящего тона. Третий круг — это оттенки предыдущего круга смешанные с основным, белым и черным.

Как получить зеленый цвет, смешивая краски

Как получить другие цвета и их оттенки: теория и практика. Жми на иконку.

Как сделать цвет в паскале

Я понимаю, что не в тему чуть-чуть =), но просто не знаю куда обратиться — сайтов по паскалю не осталось.

Вообщем, у меня есть задача: матрица, и в каждую ее ячейку нужно ввести цвет. То есть я себе представляю это так:

Допустим, есть матрица 10X10. При запуске программы рисуется таблица 10X10 клеток. И предлагается выбрать цвет. Выбираешь, жмешь Enter, первая ячейка закрашивается выбранным цветом. Далее опять предлагается выбрать цвет, выбираешь. и вторая ячейка окрашивается. Так до тех пор пока не раскраситься вся таблица.
Как это реализовать ? Как можно рисовать в Паскале ? Желательно, как можно более простой вариант и без использование нестандартных модулей. Если кто встречался с таким — с благодарностью приму готовый код (ну или почти готовый). Вообщем, поможите чем-нибудь.

P.S. Модераторы, плиз, не удаляйте данное сообщение. Ну очень нужно.

uses graph;
.
bar,circle,rectange. -рисуют всякую всячину (прямоугольник, круг, рамку прямоугольника).
А вообще см. хэлп в Паскале.

Что бы рисовать в ТР нужно сначало иныциализировать графику, Например:

Uses Graph;
Var gd,Gm:Integer;
Begin
InitGraph(Gd,Gm,"Путь, где лежит графический драйвер, например EgaVga.bgi");

Что бы нарисовать прямоугольник можно использовать Rectangle(x1,y1,x2,y2:Integer);

Устанавливает цвет линий: SetColor(c:Word);

Стиль закраски: SetFillStyle(pattern:Word,color:Word);

Прежде всего надо знать — как ты рисуешь. Есть два варианта : 1) в граф режиме; 2) в текстовом.
Если ты это делаешь в тестовом режиме (это проще — советую делать в нём — в графическом режиме надо учитывать различные режимы (EGA,VGA,SVGA и т.п.), инициализирования экрана, страницы памяти . дофига — в текстовом меньше и проще. но это текстовый режим. )
. блин, а я не могу вспомнить для текстового режима функции позиционирования. для граф. могу. сейчас.
TextColor(value) = задаёт цвет текста (1..16)
TextBackGround(value) =аналогично
Window(x1,y1,x2,y2) — рисует окно с фоном определённом и текстом (настройками определёнными выше)
GotoXY(x,y) — пизиционирует курсор в координатах
Левый верхний угол экрана — 0,0
Если не ошибаюсь — ClrScr — очистка экрана
WhereX,WhereY — координаты курсора(функции)
Дальше сам копай

Ну ладно, напишу поподробнее 🙂
ClearViewPort-очистить окно
CloseGraph-закрыть графический режим
Line-чертит линию
LineTo-чертит линию (начиная с текущей позиции)
OutText-вывод текста
SetBkColor-цвет фона
SetColor-цвет того, что будешь рисовать
SetFillStyle-стиль закраски
SetLineStyle-стиль линии
SetTextStyle-стиль текста
.
Параметры см. в хэлпах (я думаю с этим справишься)

Откопал пример:
Для граф модуля:

uses crt, graph;
var GraphDriver,GraphMode:integer;
begin
GraphDriver:=detect;
InitGraph(GraphDriver,GraphMode,"");
IF GraphResult<>grOk then begin writeln("Fuck error!graph
loose");Halt(1);end;ClearDevice;SetBkColor(..);SetColor(..);
///
тут смотри что тебе писал cok
.
CloseGraph;
end.

да, вспомнил нюанс &#8212; если хочешь, чтобы определённые настройки цвера срабатывали (те, что по умолчанию), то ClrScr или ClearDevice &#8212; пиши после них. и цвета от 0..15,blink &#8212; это точнее, а то я тебя прошлый раз тоже обманул

Спасибо, народ. Остался вопрос:

al creator © (04.04.02 21:51)
. Есть два варианта : 1) в граф режиме; 2) в текстовом.

А как рисовать в текстовом режиме ? Потому что мне важно сделать как можно проще, без возни с инцилизацией, дополнительными библиотеками (EgaVga.bgi) и т.д.

В текстовом режиме 80х25 рисовать можешь спец-символами (псевдографикой)(попробуй через Alt+число(0..255) понабирать и посмотреть, что получиться, можешь через процедуру for i:=0 to 255 do write(i," = ",Chr(i);Chr-получение символа по его коду), я не помню просто, но там есть зарисованные прямоугольники (как на досовских прогресс-барах и всякая срань). Сначала можешь нарисовать своё окно на весь экран, потом пизиционировать курсор, где тебе надо и пиши обычным write определив цвет и бэкграунд-цвет &#8212; вот и всё. Код писать готовый некогда и надо ещё искать на чём &#8212; уж извини, придётся тебе самому поразбираться!

Оформление и разметку текста используют довольно редко , однако бывают случаи , когда они вам пригодятся.

Возможно , когда-нибудь вы столкнетесь с такой задачей : как оформить текст в паскале.

В данной статье вы узнаете о том , как изменить цвет текста , как добавить цветной фон , как очистить экран и т.д.

Модуль crt

Если вы не подключите данный модуль , то функции по оформлению текста не будут работать.

После того , как вы его подключите , программа будет работать в новом окне размером 80&#215;25. Представлять такое окно можно как таблица в 25 строк и 80 столбцов.

GotoXY

TextColor

Стандартно , в языке программирования паскаль текст выводится строго черным цветом , но его также можно изменить. Изменить цвет текста можно командой textcolor. Чтобы изменить цвет текста требуется использовать команду textcolor(red) , а в скобках указать цвет ( например red ). В скобках можно использовать название цвета , а также код цвета.

Но стоит помнить , что команда textcolor не меняет весь текст на экране ,а только тот , который выводится после этой команды.

Clrscr

TextBackGround

Delay

В данном случае на экран будет выведено сообщение "hello" с задержкой 1000 мкс.

В чем заключается вопрос: Как начать работать с графикой на языке Pascal. Основные процедуры(команды).

Сложность : средняя .

Сразу стоит сказать что если вы будите использовать для графики программу PascalABC, то эта статья вам не много не подойдет, за исключение нескольких процедур(команд). Для этой статьи могут использоваться программы Turbo и FreePascal.

Для того чтобы рисовать в Паскале всякие графики, линии, круги и т.д., нужен определенный модуль uses graph, который подключается в самом начале программы:

Дальше в программе нужно открыть окно где мы будет рисовать, т.е. когда мы запустим программу откроется окно графического режима где будет отображено, то что мы нарисовали.

Не надо сильно думать над этой строкой, она практически всегда одинакова. Но про неё расскажу. Как я и сказал это процедура используется для открытия графического режима. У неё 3 параметра:

1-й : Графический драйвер.
2-й : Режим работы этого драйвера.
3-й : Путь к файлу(графическому драйверу) EGAVGA . BGI

Графический драйвер Константа режима Растр Палитра Число страниц
Имя Значение Имя Значение
Detect Выбор драйвера автоматически
CGA 1 CgaC0 320*200 C0 1
CgaC1 1 320*200 C1 1
CgaC2 2 320*200 C2 1
CgaC3 3 320*200 C3 1
CgaHi 4 640*200 2 цвета 1
MCGA 2 McgaC0 320*200 C0 1
McgaC1 1 320*200 C1 1
McgaC2 2 320*200 C2 1
McgaC3 3 320*200 C3 1
mcgaMed 4 640*200 2 цвета 1
McgaHi 5 640*480 2 цвета 1
EGA 3 EgaLo 640*200 16 цвет. 4
EgaHi 1 640*350 16 цвет. 2
VGA 9 VgaLo 640*200 16 цвет. 2
VgaMed 1 640*350 16 цвет. 2
VgaHi 2 640*480 16 цвет. 1

Файл EGAVGA . BGI лежит у вас папке с программой в папке bgi если его нет, то его можно скачать в интернете и закинуть в папку с программой. Пример:

Вот это стандарт, т.е. написав вот это, только поменяв путь к файлу вы сможете спокойно работать, не думая ни о чем, режим у вас установится автоматически, если вы хотите свой режим то присвойте переменным d и m цифры из таблицы.

Если напишете так, будет ошибка:

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

Основные процедуры(команды)

Установка цвета.

Имя константы Номер цвета Цвет
Black Черный
Blue 1 Темно-синий
Green 2 Темно-зеленый
Cyan 3 Бирюзовый
Red 4 Красный
Magenta 5 Фиолетовый
Brown 6 Коричневый
LightGray 7 Светло-серый
DarkGray 8 Темно-серый
LightBlue 9 Синий
LightGreen 10 Светло — зеленый
LightCyan 11 Светло-бирюзовый
LightRed 12 Розовый
LightMagenta 13 Малиновый
Yellow 14 Желтый
White 15 Белый

Например цвет линий которые будут отображаться на экране можно задать так:

Установка цвета фона.

Чтобы установить цвет фона для всего экрана, используется процедура:

Если процедура установки цвета фона не вызвана, экран будет черным.

Установка указателя вывода.

Процедура MoveTo ( x, y: integer) перемещает указатель в точку с координатами x, y.

Процедура MoveRel ( dx, dy: integer) перемещает указатель на dx, dy пикселей относительно последнего положения.

Функции GetX и GetY возвращают координаты x, y указателя вывода.

Установка точки

Процедура PutPixel ( x, y: integer; color: word) устанавливает точку с координатами ( x, y) и закрашивает ее указанным цветом color.

Функция GetPixel ( x, y: integer): word возвращает значение цвета, в который окрашена точка с координатами ( x, y).

Рисование линий

Процедура Line ( x1, y1, x2, y2: integer) вычерчивает линию между двумя точками экрана с координатами ( x1, y1) и ( x2, y2).

Процедура LineTo ( x, y: integer) вычерчивает линию от последнего положения указателя до точки с координатами ( x, y).

Окружность, эллипс, дуга, сектор

Процедура Circle ( x, y: integer; r: word) вычерчивает окружность радиуса r с центром в точке с координатами ( x, y).

Процедура Arc ( x, y, ugol_ begin, ugol_ end, r: integer) вычерчивает дугу окружности радиуса r с центром в точке с координатами ( x, y). Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца дуги. Отсчет углов ведется против часовой стрелки. Значения угловых координат задается в градусах.

Процедура Ellips ( x, y: integer; ugol_ begin, ugol_ end, rx, ry: word) вычерчивает эллипс или дугу эллипса с центром в точке с координатами ( x, y). Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца дуги. Параметры rx и ry определяют горизонтальный и вертикальный радиусы эллипса.

Процедура PieSlice ( x, y: integer; ugol_ begin, ugol_ end, r: word) вычерчивает сектор окружности радиуса r с центром в точке с координатами ( x, y ). Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца сектора.

Сектор может быть закрашен в соответствии со стилем, заданным процедурой SetFillStyle (о ней читайте ниже).

Процедура Sector ( x, y: integer; ugol_ begin, ugol_ end, rx, ry: word) вычерчивает сектор эллипса с центром в точке с координатами ( x, y) и горизонтальным радиусом rx, вертикальным — ry. Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца сектора.

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

Прямоугольник, закрашенный прямоугольник, параллелепипед

Процедура Rectangle ( x1, y1, x2, y2: integer) вычерчивает контур прямоугольника. Параметры x1, y1 задают положение левого верхнего угла, x2, y2 – правого нижнего.

Процедура Bar ( x1, y1, x2, y2: integer) вычерчивает закрашенный прямоугольник. Параметры x1, y1 задают положение левого верхнего угла, x2, y2 – правого нижнего. Стиль и цвет заливки определяется процедурой SetFillStyle.

Процедура Bar3 D ( x1, y1, x2, y2: integer; глубина: word; граница: boolean) вычерчивает параллелепипед. Параметры x1, y1 задают положение левого верхнего угла, x2, y2 – правого нижнего угла ближней грани. Параметр глубина задает расстояние между передней и задней гранями в пикселях. Параметр граница определяет, нужно ли вычерчивать верхнюю границу задней грани параллелепипеда. Стиль и цвет заливки ближней грани определяется процедурой SetFillStyle.

Вывод текста в графическом режиме.

Процедура OutText ( text: string) выводит строку символов text от текущей позиции указателя вывода и перемещает указатель в точку, расположенную за последним выведенным символом.

Процедура OutTextXY ( x, y: integer; text: string) выводит строку символов text, начиная с точки с координатами ( x, y), при этом указатель своего положения не меняет, т.е. остается в точке ( x, y ).

Стиль вычерчиваемых линий, контуров

Процедура SetLineStyle ( type, pattern, thick: word) устанавливает стиль вычерчиваемых линий. Здесь type, pattern, thick – соответственно тип, образец и толщина линии.

Тип линии может быть задан с помощью одной из следующих констант:

Параметр Pattern учитывается только для линий, вид которых определяется пользователем, т.е. если type=4. Во всех остальных случаях можно поставить любое значение типа word (но обязательно поставить, все-таки это параметр процедуры, значит должен быть).

Каким образом можно задать пользовательский тип линии? Под тип линии отводится переменная типа word, т.е. два байта. Эти два байта и определяют образец линии: каждый установленный в единицу бит этого слова соответствует светящейся точке, нулевой бит — несветящийся пиксель. Таким образом, задается отрезок линии длиной в 16 пикселей. Этот образец периодически повторяется по всей длине линии.

Параметр thick может принимать одно из двух значений:

Стиль и цвет заливки

Процедура SetFillStyle ( style, color: word) устанавливает стиль и цвет заливки (закрашивания) областей ( Bar, Bar3 D, Sector и др.). В качестве параметра style используют одну из констант:

  • EmptyFill=0
  • SolidFill=1
  • LineFill=2
  • LtSlashFill=3
  • SlashFill=4
  • BkSlashFill=5
  • LtBkSlashFill=6
  • HatchFill=7
  • XHatchFill=8
  • InterleaveFill=9
  • WideDotFill=10
  • CloseDotFill=11
  • UserFill=12

Стиль вывода текста

Процедура SetTextStyle ( font, orient, size: word) устанавливает шрифт font, ориентацию orient и размер size текста, выводимого на экран. Параметр font может принимать одну из констант:

  • DefaultFont=0
  • TriplexFont=1
  • SmallFont=2
  • SansSerifFont=3
  • GothicFont=4

В 7.0 версии Паскаля набор шрифтов значительно расширен, но для новых шрифтов не придуманы мнемонические константы, поэтому можно использовать такие номера шрифтов:

  • — «рукописный» шрифт ( scri. chr);
  • — одноштриховой шрифт типа Courier ( simp. chr);
  • — наклонный шрифт типа Times Italic ( tscr. chr);
  • — шрифт типа Times Rovan (lcom.chr);
  • — шрифт типа Courier увеличенного размера ( euro. chr);
  • — крупный двухштриховой шрифт ( bold. chr).

Замечание: все шрифты, кроме стандартного (матричного), являются векторными, что позволяет изменять их размеры без ухудшения качества. Каждый из этих шрифтов размещается в отдельном файле. Для использования этих шрифтов необходимо разместить соответствующий файл в рабочем каталоге, в противном случае вызов этого шрифта игнорируется и подключается стандартный шрифт.

Параметр orient задает ориентацию выводимого текста:

Каждый шрифт способен десятикратно изменять свои размеры. Размер шрифта задается параметром size, который может иметь значения от 1 до 10 (точечный или матричный шрифт – в диапазоне от 1 до 32).

Заполнение (закрашивание) произвольной замкнутой фигуры

Процедура FloodFill ( x, y: integer; border: word) заполняет произвольную замкнутую фигуру, используя текущий стиль и цвет заполнения. Координаты точки ( x, y ) указывают, начиная с какой точки будет производиться заливка. Если точка находится внутри замкнутой фигуры, то будет закрашена внутренняя область. Если фигура не замкнута, то заливка разольется по всему экрану. Параметр border указывает цвет граничной линии.

Очистка графического экрана

Процедура ClearDevise очищает графический экран, устанавливает указатель в левый верхний угол.

Сразу вы естественно это не поймёте, нужна практика и еще раз практика иначе не как. Удачи. Спасибо за внимание.

Colors/ru

В LCL TColor — это стандартный тип цвета. Он совместим с TColor Delphi. TColor может представляться как в виде значения RGB (3x8bit), так и в виде системного цвета наподобие clDefault. LCL также может работать с системой fpImage, которая использует тип TFPColor (RGBA (4x16bit), а не RGB (3x8bit), как TColor).

Преобразование значений между TColor и RGB

Модуль Graphics предосталяет следующие функции:

Преобразование типа TColor в/из строки

Функции для преобразования строк вроде "25500" или "$AA0088" или "clNavy" в TColor:

  • StringToColor
  • StringToColorDef

Чтобы преобразовать TColor в красивую строку, такую как "clNavy" или "$AA0002":

  • ColorToString

Преобразование типа TColor в/из HTML-строки #rrggbb

Таблица стандартных цветов

Предусмотрено около 20 предопределенных цветовых Констант, которые совместимы с Delphi:

Цветовая константа Описание цвета Шестнадцатеричное представление для использования с TColor Пример
clBlack Черный TColor($000000);
clMaroon Темно-бордовый TColor($000080);
clGreen Зеленый TColor($008000);
clOlive Оливково-зеленый TColor($008080);
clNavy Темно-синий TColor($800000);
clPurple Темно-фиолетовый TColor($800080);
clTeal Сине-зеленый TColor($808000);
clGray Серый TColor($808080);
clSilver Серебристый TColor($C0C0C0);
clRed Красный TColor($0000FF);
clLime Салатовый TColor($00FF00);
clYellow Желтый TColor($00FFFF);
clBlue Синий TColor($FF0000);
clFuchsia Фуксия TColor($FF00FF);
clAqua Голубой TColor($FFFF00);
clLtGray Светло-серый TColor($C0C0C0); псевдоним для clSilver
clDkGray Темно-серый TColor($808080); псевдоним для clGray
clWhite Белый TColor($FFFFFF);
clCream Кремовый TColor($F0FBFF); Lazarus 1.2 и новее
clMedGray Средне-серый TColor($A4A0A0); Lazarus 1.2 и новее
clMoneyGreen Денежная зелень TColor($C0DCC0); Lazarus 1.2 и новее
clSkyBlue Небесно-голубой TColor($F0CAA6); Lazarus 1.2 и новее

Системные цвета

Пример: clInfoBk, clInfoText

Системные цвета — это цветовые константы с особым значением. Их реальное значение зависит от контекста и темы. Они не являются просто цветом. Например, clInfoBk:

Окно подсказок в MS Windows может иметь белый фон, поэтому вышеприведенный цвет будет отображаться белым. В Linux/gtk2 это может быть металлическая текстура, поэтому вышеприведенный будет рисовать текстуру. Если вы хотите поместить какой-либо текст в это окно, вам понадобится соответствующий контрастный цвет, например, clInfoText, иначе ваш текст может быть нечитаемым для пользователя. Например:

Системный цвет clInfoBk не может использоваться для Pen.Color и Font.Color. Если вы сделаете это, результат не определен и зависит от набора виджетов и пользовательской темы. То же самое для clInfoText: он может использоваться только как Font.Color. Использование его в качестве Brush.Color может не работать. На данный момент все виджеты позволяют использовать его как Pen.Color.

Изменения темы

Когда пользователь переключает тему, системные цвета меняются. ClInfoBk может измениться с белого на синий или с цвета на текстуру. Это изменение произойдет, когда вы назначите новый дескриптор кисти. Имейте в виду, что простое присвоение Brush.Color:=clInfoBk не назначает дескриптор кисти. Дескриптор кисти назначается в процессе использования. Например:

Таблица системных цветов

В следующей таблице перечислены системные цвета и их значение. Использование их вне описанной области неоднозначно, и результат зависит от набора виджетов и темы. Например, clDefault — обычная кисть фона используемого контекста устройства. Если вы хотите рисовать элементы кнопок на своих собственных элементах управления, используйте функции рисования модуля Themes.

  • На холсте формы FillRect закрашивает прямоугольную область, заполненную обычным фоном стандартного окна. Это то, что определяет набор виджетов и тема. Это может быть серый цвет, или градиент, или изображение.
  • Использование clDefault на холсте TListBox будет рисовать с нормальным фоном, который обычно белый в Windows. Таким образом, в TListBox clDefault совпадает с clWindow.
  • При использовании его в качестве цвета пера будет задействован цвет линии по умолчанию для контекста устройства.
  • При использование его в качестве цвета шрифта будет задействован обычный цвет текста контекста устройства.

Нахождение значений RGB системного цвета

Используйте функцию ColorToRGB (в модуле Graphics), чтобы определить компоненты rgb системного цвета. Эта функция определяет, является ли цвет системным цветом, и, если это так, находится ли системный цвет в цветовой гамме текущей темы. Возвращаемое значение типа Longint можно понимать как обычный цвет:

Рисование элементов соответственно теме на ваших пользовательских элементах управления

Модуль Themes предоставляет функции для рисования отдельных элементов стандартных элементов управления. Например, чтобы нарисовать знак раскрытия узла, например, TTreeView, используйте следующий код:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *