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

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

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

2018-01-29 281
Некоторые функции для работы с цветом 0.00 из 5.00 0 оценок
Заказать работу

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.

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

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.

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

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

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

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

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

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

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

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

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

Var C: 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(по умолчанию) Сплошное перо
psClear Прозрачное перо  
psDash Штриховое перо
psDot Пунктирное перо
psDashDot Штрихпунктирное перо
psDashDotDot Перо, чередующее штрих и два пунктира

Перо по умолчанию пишет чёрной сплошной линией толщиной 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

Uses GraphABC;

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. Нарисовать и закрасить пятиконечную звезду

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

Uses GraphABC;

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.

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

Центр круга спроектируем на оси координат. На оси 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).

Uses GraphABC; //подключение модуля 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 используются процедуры:

Uses GraphABC; //подключение модуля 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 Прямоугольная клетка
bhDiagonalCross Косоугольная клетка
bhBackwardDiagonal Косой штрих / / / / /
bhForwardDiagonal Косой штрих \ \ \ \ \
bhHorizontal Штриховка горизонтальными линиями
bhVertical Штриховка вертикальными линиями

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

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

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

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

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

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

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

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

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

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

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

Uses GraphABC; // Подключили модуль 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. // Конец программы

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

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

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


Поделиться с друзьями:

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.062 с.