Некоторые функции для работы с цветом

RGB(R,G,B) Возвращает цвет(типа Color), который содержит красную (R), зеленую (G) и синюю (B) составляющие (R,G,B - в диапазоне от 0 до 255).
ARGB(A,R,G,B) Возвращает цвет(типа Color), который содержит прозрачность (A), красную (R), зеленую (G) и синюю (B) составляющие (A,R,G,B- в диапазоне от 0 до 255).
clRandom Возвращает случайный цвет(типа Color).
GetRed(C) Возвращает красную составляющую цвета C–целое число в диапазоне от 0 до 255
GetGreen(C) Возвращает зеленую составляющую цвета C–целое число в диапазоне от 0 до 255
GetBlue(C) Возвращает синюю составляющую цвета C–целое число в диапазоне от 0 до 255
GetAlpha(C) Возвращает составляющую прозрачности цвета C–целое число в диапазоне от 0 до 255

Пример5. С помощью функции RGB можно получить любой цвет, указав нужные базовые составляющие.Используя функцию RGB, будем получать различные цвета и закрашивать ими графическое окно с помощью процедуры ClearWindow.

UsesGraphABC; // подключение модуля

begin// начало программы

SetWindowCaption('красный цвет'); // красный цвет

ClearWindow(RGB(255,0,0)); // очистка окна красным цветом

ReadLn; // пауза до нажатия ENTER

SetWindowCaption('зеленый цвет'); // зелёный цвет

ClearWindow(RGB(0,255,0)); // очистка окна зеленым цветом

ReadLn; // пауза до нажатия ENTER

SetWindowCaption('синий цвет'); // синий цвет

ClearWindow(RGB(0,0,255)); // очистка окна синим цветом

ReadLn; // пауза до нажатия ENTER

SetWindowCaption('красный + зелёный = ?'); // красный + зелёный

ClearWindow(RGB(255,255,0)); // очистка окна заданным цветом

ReadLn; // пауза до нажатия ENTER

SetWindowCaption('красный + синий = ?'); // красный + синий

ClearWindow(RGB(255,0,255)); // очистка окна заданным цветом

ReadLn; // пауза до нажатия ENTER

SetWindowCaption('зелёный + синий = ?'); // зелёный + синий

ClearWindow(RGB(0,255,255)); // очистка окна заданным цветом

ReadLn; // пауза до нажатия ENTER

SetWindowCaption('оттенок серого'); // когда всех поровну

ClearWindow(RGB(100,100,100)); // очистка окна серым цветом

ReadLn; // пауза до нажатия ENTER

SetWindowCaption('белый цвет'); // белый цвет

ClearWindow(RGB(255,255,255)); // очистка окна белым цветом

ReadLn; // пауза до нажатия ENTER

SetWindowCaption('чёрный цвет'); // чёрный цвет

ClearWindow(RGB(0,0,0)); // очистка окна чёрным цветом

ReadLn; // пауза до нажатия ENTER

SetWindowCaption('случайный цвет'); // случайный цвет

ClearWindow(clRandom); // очистка окна случайным цветом

End. // конец программы

Цветовые константы

(здесь приведено только несколько цветовых констант, на самом деле в модуле их около 140)

Цветовая константа Цвет
clBlack Чёрный
clMaroon Красно-коричневый
clGreen Зелёный
clOlive Желтовато-зелёный
clNavy Тёмно-синий
clPurple Пурпурный
clSkyBlue Голубой
clGray Серый
clSilver Серебряный
clRed Красный
clLime Салатовый
clYellow Жёлтый
clBlue Синий
clFuchsia Ярко-розовый
clAquamarine Бирюзовый
clLightGray Светло-серый
clDarkGray Тёмно-серый
clWhite Белый

Пример6.Получениеи вывод базовых составляющих цвета clAquamarine.

UsesGraphABC; //подключение модуля

VarC: Color; //переменная С типа Color

begin//начало программы

Window.Caption:='Цвет Aquamarine'; // заголовок окна

C := clAquamarine; //С получила значение clAquamarine

WriteLn('Red=',GetRed(C),
'Green=',GetGreen(C),
'Blue=',GetBlue(C)); // вывод базовых составляющих цвета

End.//конец программы

Пример 7.Получение и вывод базовых составляющих случайного цвета.

UsesGraphABC; //подключение модуля

VarC: Color; //переменная С типа Color

begin//начало программы

Window.Caption:='Случайный цвет'; // заголовок окна

C := clrandom; //С получила случайное значение

Print(GetAlpha(C), //вывод прозрачности

GetRed(C), // и базовых составляющих цвета С

GetGreen(C),

GetBlue(C));

end.//конец программы

Рисование в графическом окне.

Рисование осуществляется текущим пером Pen(рисование линий и контуров фигур), текущей кистью Brush(заливка замкнутых областей) и текущим шрифтом Font(вывод строк).

Перо

Для рисования линий, контуров фигур и текста используется объект Pen(перо). Объект Pen имеет ряд свойств. Среди них:

- Color – цвет пера (по умолчанию clBlack- чёрный);

- Width – толщина перав пикселах (по умолчанию – 1 пиксел);

- Style – стиль пера(по умолчанию – psSolid);

- X – x-координата текущей позиции пера;

- Y– y-координата текущей позиции пера;

Стили пера

Значения свойства Styleобъекта Pen Стиль линии Образец линии
psSolid(по умолчанию) Сплошное перо Некоторые функции для работы с цветом - student2.ru
psClear Прозрачное перо  
psDash Штриховое перо Некоторые функции для работы с цветом - student2.ru
psDot Пунктирное перо Некоторые функции для работы с цветом - student2.ru
psDashDot Штрихпунктирное перо Некоторые функции для работы с цветом - student2.ru
psDashDotDot Перо, чередующее штрих и два пунктира Некоторые функции для работы с цветом - student2.ru

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

Pen.Color := clRed; {перо будет писать красным цветом}

Pen.Width:= 3; {толщина пера – 3 пиксела }

Pen.Style := psDot; {линии будут пунктирные}(

Такого же результата можно достичь, используя следующие процедуры:

SetPenColor(clRed); {перо будет писать красным цветом}

SetPenWidth(3); {толщина пера – 3 пиксела }

SetPenStyle(psDot); {линии будут пунктирные}

Процедуры движения пера, рисования отрезков
MoveTo(X,Y); Перо устанавливается в точку X,Y
LineTo(X,Y); Рисуется отрезок от текущей позиции пера до точки (X,Y). Текущая позиция переносится в точку (X,Y).
Line(X1,Y1, X2,Y2); Рисуется отрезок от точки (X1,Y1) до точки (X2,Y2). Положение пера не изменяется.
Процедура закраски замкнутой области
FloodFill(X,Y,C); Закрашивает замкнутую область одного цвета цветом C, начиная с точки (X,Y), находящейся внутри замкнутой области.

Пример 8. Нарисовать диагонали графического окна с помощью поцедуры Line

UsesGraphABC;

Begin

Window.Title := 'Диагонали окна';

Pen.Color := clRandom; {случайный цвет пера}

Pen.Width := 5; {толщина пера – 5 пикселов }

Pen.Style := psDash; {штриховое перо}

Line(0,0, WindowWidth,WindowHeight);

Line(0,WindowHeight, WindowWidth,0);

end.

Пример9. Нарисовать и закрасить пятиконечную звезду

Некоторые функции для работы с цветом - student2.ru Вершины пятиконечной звезды имеют координаты: A (200,100) B (295,169) C (259,281) D (141,281) E (105,169) Красным пером толщиной 4 пиксела нарисовать звезду, используя процедуры рисования MoveTo и LineTo. Дополнительно: закрасить звезду красным цветом, используя процедуру FloodFill.

UsesGraphABC;

Begin

Window.Caption :='Пятиконечная звезда'; // Заголовок окна

Pen.Color := clRed; // Красный цвет пера

Pen.Width := 4; // Толщина пера 4 пиксела

{Другой вариант программы, где предыдущие три оператора заменяются процедурами:

SetWindowCaption('Пятиконечная звезда');

SetPenColor(clRed);

SetPenWidth(3);

}

MoveTo(200, 100); // Установить перо в точку А

LineTo(259, 281); // Отрезок АС

LineTo(105, 169); // Отрезок СЕ

LineTo(295, 169); // Отрезок ЕВ

LineTo(141, 281); // Отрезок ВD

LineTo(200, 100); // Отрезок DА

FloodFill(200, 200, clred); // Закраска центрального пятиугольника

FloodFill(200, 104, clRed); // Закраска вершины A

FloodFill(280, 170, clRed); // Закраска вершины B

FloodFill(120, 170, clRed); // Закраска вершины E

FloodFill(240, 240, clRed); // Закраска вершины C

FloodFill(160, 240, clRed); // Закраска вершины D

end.

Как нарисовать круг в графическом окне?

Некоторые функции для работы с цветом - student2.ru Центр круга спроектируем на оси координат. На оси X получаем точку X0, а на оси Y получаем точку Y0. Это и есть координаты центра круга – (X0,Y0). Радиус круга обозначен буквой R. Чтобы задать круг, надо вызвать нужную процедуру и в ней перечислить 3 параметра – координаты центра и радиус: X0,Y0,R.

Процедуры рисования круга

DrawCircle(X0,Y0,R); Контур круга (окружность) рисуется текущим пером. Внутренность круга не закрашивается
FillCircle(X0,Y0,R); Внутренность круга закрашивается текущей кистью. Контур круга (окружность)не рисуется
Circle(X0,Y0,R); Контур круга (окружность) рисуется текущим пером. Внутренность круга закрашивается текущей кистью.

Пример 10.Нарисуем пять концентрических окружностей разными стилями пера.
Центр окружностей – точка (320,240).

UsesGraphABC; //подключение модуля GraphABC

begin //начало программы

Window.Caption := ' «Стильные» окружности'; // заголовок окна

Pen.Color := clRandom; // задали случайный цвет пера

Pen.Width := 3; // толщина пера - 3 пиксела

Pen.Style := psSolid; // стиль пера "Сплошное перо"

DrawCircle(320,240, 220); // нарисовали сплошную окружность R=220

Pen.Style := psDash; // стиль пера "Штриховое перо"

DrawCircle(320,240, 180); // нарисовали штриховую окружность R=180

Pen.Style := psDot; // стиль пера "Пунктирное перо"

DrawCircle(320,240, 140); // нарисовали пунктирную окружность R=140

Pen.Style := psDashDot; // стиль пера "Штрихпунктирное перо"

DrawCircle(320,240, 100); // штрихпунктирная окружность R=100

Pen.Style := psDashDotDot; // стиль пера "Штрих и два пунктира"

DrawCircle(320,240, 60); // нарисовали окружность таким стилем R=60

end.

Другой вариант программы, где для изменения свойств объекта Penиспользуются процедуры:

UsesGraphABC; //подключение модуля GraphABC

begin //начало программы

SetWindowCaption('«Стильные» окружности'); // заголовок окна

SetPenColor(clRandom); // задали случайный цвет пера

SetPenWidth(3); // толщина пера - 3 пиксела

SetPenStyle(psSolid); // стиль пера "Сплошное перо"

DrawCircle(320,240, 220); // нарисовали сплошную окружность R=220

SetPenStyle(psDash); // стиль пера "Штриховое перо"

DrawCircle(320,240, 180); // нарисовали штриховую окружность R=180

SetPenStyle(psDot); // стиль пера "Пунктирное перо"

DrawCircle(320,240, 140); // нарисовали пунктирную окружность R=140

end.

Кисть

Для закрашивания внутренностей замкнутых областей используется объект Brush(кисть). Объект Brushимеет ряд свойств:

- Style – стиль кисти(по умолчанию - bsSolid);

- Color – цвет кисти(по умолчанию clWhite- белый);

- Hatch – штриховка(по умолчанию - bhCross);

- HatchBackgroundColor – фон штриховки(по умолчанию clWhite- белый).

Среди свойств кисти определяющим является свойство Style – стиль кисти.

Стили кисти

Значения свойства Style объекта Brush  
bsSolid (по умолчанию) Сплошная кисть. Закрашивает замкнутую область. Цвет сплошной кисти задаётся свойством - Color – цвет кисти(по умолчанию clWhite- белый).
bsClear Прозрачная кисть.Закраска не происходит.
bsHatch Штриховая кисть. Штрихует замкнутую область. Для штриховой кисти свойство Color не срабатывает, зато можно устанавливать свойства: - Hatch – штриховка(по умолчанию bhCross- клетка); - HatchBackgroundColor – фон штриховки (по умолчанию - белый)

Стили штриховки(здесь приведено несколько штриховок, на самом деле в модуле их около 60)

Значения свойства Hatch объекта Brush Штриховка Образец штриховки
bhCross Прямоугольная клетка Некоторые функции для работы с цветом - student2.ru
bhDiagonalCross Косоугольная клетка Некоторые функции для работы с цветом - student2.ru
bhBackwardDiagonal Косой штрих / / / / / Некоторые функции для работы с цветом - student2.ru
bhForwardDiagonal Косой штрих \ \ \ \ \ Некоторые функции для работы с цветом - student2.ru
bhHorizontal Штриховка горизонтальными линиями Некоторые функции для работы с цветом - student2.ru
bhVertical Штриховка вертикальными линиями Некоторые функции для работы с цветом - student2.ru

Задание свойств кисти:

Brush.Color:= clGreen;{цвет сплошной кисти - зелёный}

Brush.Style:= bsHatch;{стиль кисти– штриховая кисть}

Brush.Hatch:= bhDiagonalCross;{стиль штриховки – косоугольная клетка}

Brush.HatchBackgroundColor:=clBlue; {задний плана штриховки - синего цвета}

Такого же результата можно достичь, используя следующие процедуры:

SetBrushColor(clGreen);{цвет сплошной кисти - зелёный}

SetBrushStyle(bsHatch);{стиль кисти – штриховая кисть}

SetBrushHatch(bhDiagonalCross);{стиль штриховки – косоугольная клетка}

SetHatchBrushBackgroundColor(clBlue);{задний плана штриховки - синего цвета}

Пример 11.Работа с кистью.
Нарисуем три круга с помощью процедуры Circle.
Эта процедура нарисует круги текущим пером чёрного цвета (по умолчанию), и каждый круг закрасит кистью в зависимости от установленного стиля кисти.

UsesGraphABC; // Подключили модуль GraphABC

begin// Начало программы

Window.Caption:='«Стильные» круги';// Заголовок графического окна

Brush.Color := clYellow;// Задали цвет кисти - clYellow (жёлтый)

Brush.Hatch := bhVertical;//Задали стиль штриховки-bhVertical(вертикаль)

Brush.HatchBackgroundColor:=clLime;//Задали фон штриховки-clLime(салатовый)

Brush.Style := bsClear;// Задали стиль кисти - Прозрачная кисть (bsClear)

Circle(100,240,100); // Нарисовали первый круг

// Видим, что закраска и штриховка отсутствуют

Brush.Style := bsSolid;// Задали стиль кисти - Сплошная кисть (bsSolid)

Circle(300,240,100); // Нарисовали второй круг

// Закраска цветом кисти clYellow, штриховки нет

Brush.Style := bsHatch;// Задали стиль кисти - Штриховая кисть (bsHatch)

Circle(500,240,100); // Нарисовали третий круг

// Штриховка - bhVertical, фон штриховки - clLime

end. // Конец программы

Как нарисовать прямоугольник в графическом окне?

Некоторые функции для работы с цветом - student2.ru Рассмотрим левый верхний угол прямоугольника. Спроектируем его на оси координат. На оси X получаем точку X1, а на оси Y получаем точку Y1. Это и есть координаты левого верхнего угла прямоугольника – (X1,Y1). Аналогично подробно объяснить про правый нижний угол – (X2,Y2).

Чтобы нарисовать прямоугольник – надо вызвать нужную процедуру и в ней перечислить 4 параметра: X1,Y1,X2,Y2.

Наши рекомендации