Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Установка цвета линии, типа линии и закраски
При работе с цветными изображениями большое значение имеет набор цветов, доступных программисту. Количество доступных для воспроизведения цветов определяется возможностями аппаратуры, то есть дисплея и видеоадаптера, а также видеорежимом. В программировании обычно используется схема цветового представления, в которой считается, что каждый цвет является смесью трех основных цветов: красного Red), зеленого (Green) и синего (Blue), а оттенок определяется интенсивностью компонентов. Эта схема называется RGB-представлением. Использование RGB-представления связано с конструктивными особенностями электронно-лучевой трубки, в которой каждая графическая точка состоит из трех компонентов: красного, зеленого, синего. При инициализации видеорежима компьютер создает цветовую палитру, которую можно считать таблицей, где каждому цвету сопоставлен свой номер. При работе с цветом в режиме VGA интенсивность основного цвета задается значением типа Word. Шестнадцатицветная палитра VGA приведена в таблице (в процедурах можно использовать как константы цветов, так и их коды): Таблица 3 – Коды цветов
Процедура SetColor. Используя палитру устанавливает текущий цвет линий. Описание: SetColor (цвет: Word) Цвета линий могут принимать значения в диапазоне от 0 до 15 в зависимости от используемого графического драйвера и графического режима. Процедура SetBkColor. Используя палитру устанавливает текущий фоновый цвет. Описание: SetBkColor (цвет: Word ) Цвет фона может принимать значение в диапазоне от 0 до 15 (смотрите таблицу цветов).
Процедура SetFillStyle. Данная процедура устанавливает тип (стиль) закраски и ее цвет. Описание: SetFillStyle (стиль: Word; цвет: Word; ) В Турбо Паскале имеется 12 стилей заполнения: - 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) – стиль определен пользователем. Примечание: в скобках указаны коды стилей. В процедурах рисования можно использовать как константы стилей, так и их коды. По умолчанию устанавливается сплошная закраска белого цвета.
Процедура SetLineStyle. Функция: Устанавливает текущую толщину и тип линии. Описание: SetLineStyle (тип_строки, образец, толщина). Примечания: Данная процедура влияет на все типы линий, вычерчиваемых процедурами Line, LineTo, Rectangle, DrawPoly, Arc, Circle и др. Могут вычерчиваться непрерывные, пунктирные линии, линии, состоящие из точек или точек и тире. Описаны следующие константы типа линии: SolidLn=0 – непрерывная линия; DottedLn=1 – линия из точек; CenterLn=2 – линия из точек и тире; DashedLn=3 – пунктирная линия; UserDilLn=4 – тип, определяемый пользователем. Описаны следующие константы для толщины линий: NormWidth=1 – нормальная толщина; ThickWidth=3 – жирная линия.
Процедура FloodFill Функция: Заполняет ограниченную область, используя текущий заполнитель. Описание: FloodFill ( x, y, граница). Примечания: Эта процедура используется для заполнения замкнутой области (для растровых устройств). Точка ( x, y ) является внутренней точкой заполняемой области. Для заполнения области, ограниченной цветом, который определяет параметр " граница", используется текущий образец закраски. Если точка ( x, y ) находится внутри замкнутой области, то заполняется внутренняя область. Если эта точка находится вне замкнутой области, то заполняется ее внешняя часть (поле экрана, не входящее в область). Точки на экране
Процедура PutPixel Рисует точку на экране в заданном месте заданным цветом. Описание: PutPixel ( x, y, цвет). Примечания: Выводит точку на экране с координатами ( x, y ) заданным цветом (параметр " цвет" ).
Линии и прямоугольники
Для вывода линий и прямоугольников в модуле Graph имеются несколько процедур. Процедура Line Функция: рисует прямую линию из точки ( x 1, y 1) в точку ( x 2, y 2). Описание: Line ( x 1, y 1, x 2, y 2). Примечания: Толщина и тип линии задаются процедурой SetLineStyle, а цвет линии устанавливается процедурой SetColor.
Процедура Rectangle Функция: рисует прямоугольник, используя текущий цвет и тип строки. Описание: Rectangle (x1, y1, x2, y2). Примечания: Точка с координатами ( x 1, y 1) определяет верхний левый угол прямоугольника, а точка с координатами ( x 2, y 2) определяет нижний правый угол. При вычерчивании прямоугольника используются текущий тип строки и цвет, которые устанавливаются процедурой SetLineStyle.
Процедура Bar Функция: рисует закрашенный прямоугольник. Описание: Bar ( x 1, y 1, x 2, y 2). Описание: Рисуется закрашенный столбец, что можно использовать, например, в гистограммах. При этом используется образец и цвет закраски с помощью процедур SetFilllStyle и SetFillPattern.
Процедура Bar 3 D Описание: Bar 3 D ( x 1, y 1, x 2, y 2: Integer, глубина: Word;, вершина: Boolean ). Примечания: Рисуется заполненный трехмерный параллелепипед. При этом используется тип и цвет закраски, заданные с помощью процедур SetFillStyle и SetFillPattern. Трехмерный контур параллелепипеда вычерчивается тем цветом и типом линии, которые установлены процедурами SetLineStyle и SetColor, Параметр " глубина" представляет собой число элементов изображения, задающих глубину трехмерного контура. Если переменная, указанная в качестве параметра " вершина" принимает истинное значение (True), то для параллелепипеда рисуется трехмерная вершина, в противном случае вершина не рисуется (что позволяет рисовать несколько параллелепипедов, расположенных один на другом). Типичный параметр глубины можно вычислить, взяв за основу 25% ширины параллелепипеда: Bar3D (x1, y1, x2, y2, (x2-x1) div 4, TopOn).
Окружности, эллипсы, дуги.
Процедура Circle Функция: выводит окружность с центром в точке ( x, y ) и радиусом r. Описание: Circle ( x, y, r ).
Процедура Arc Функция: Рисует дугу окружности от начального угла до конечного угла. Описание: Arc ( x, y, нач_угол, кон_угол, радиус). Примечания: Рисует дугу окружности с центром ( x, y ) и радиусом " радиус". Дуга рисуется от начального угла (" нач_угол" ) до конечного угла (" кон_угол" ). При этом используется текущий цвет. Начальный угол, равный 00 и конечный угол, равный 3600, задают вычерчивание полной окружности.
Процудура Ellipse Рисует эллиптическую дугу от начального угла до конечного угла, используя ( x, y ) в качестве точки центра. Описание: Ellipse ( x, y, нач_угол, кон_угол, радХ, рад Y ). Примечания: Процедура рисует эллиптическую дугу, используя ( x, y ), как точку центра, а " радХ", " рад Y" – как горизоньальную и вертикальную оси. Дуга эллипса вычерчивается от начального угла (параметр " нач_угол" ) до конечного угла (параметр " кон_угол" ) текущим цветом. Углы для процедур Arc, Ellipse и PieSlice задаются по направлению против часовой стрелки. При этом значение (в градусах) 0 соответствует 3 часам, 90 градусов – 12 часам и т.д.
Процедура FillEllipse Функция: рисует закрашенный эллипс. Описание: FillEllipse ( x, y, X радиус, Y радиус). Примечания: Используя точку с координатами ( x, y ) в качестве центра, а Храдиус и Y радиус – в качестве горизонтальной и вертикальной осей, рисует закрашенный эллипс.
Сектор Процедура PieSlice Функция: рисует и заполняет цветом сектор круга. Описание: PieSlice ( x, y, нач_угол, кон_угол, радиус). Примечания: ( x, y ) используются в качестве центра окружности, а сектор рисуется от начального угла (параметр " нач_угол" ) до конечного угла (" параметр " кон_угол" ). Контур сектора вычерчивается текущим цветом, а при закрашивании используются тип и цвет закраски, заданные процедурами SetFillStyle и SetFillPattern. Начальный угол, равный 0 градусов и конечный угол, равный 360 градусов, задают вычерчивание полной окружности.
Процедура Sector Функция: вычерчивает и заполняет эллиптический сектор. Описание: Sector ( x, y, нач_угол, кон_угол, Храдиус, Y радиус). Примечания: Процедура использует ( x, y ) как точку центра, параметры " X радиус" и Y радиус" определяют горизонтальный и вертикальный радиусы. Сектор вычерчивается от начального угла (параметр " нач_угол" ) до конечного угла (" параметр " кон_угол" ). Сектор рисуется текущим цветом и закрашивается с использованием образца закраски и цвета, заданных с помощью процедур SetFillStyle и SetFillPattern. Если задан начальный угол 00 и конечный угол 3600, то будет нарисован и закрашен полный эллипс.
Многоугольники
Процедура DrawPoly Функция: Используя текущий тип прямой и текущий цвет рисует контур многоугольника. Описание: DrawPoly (числ_коозд, коорд_верш). Примечания: Параметр " коорд_верш" является нетипизированным параметром, который содержит координаты каждого пересечения в многоугольнике. Параметр " числ_коорд" задает число координат в " коорд_верш". Координата состоит из двух слов: значения х и значения y. Данная процедура использует текущий тип линии и текущий цвет. Заметим, что для вычерчивания замкнутой фигуры с n вершинами вы должны передать при обращении к процедуре DrawPoly n +1 координату, где координата вершины с номером n будет равна координате вершины с номером 1.
Процедура FillPoly Функция: Заполняет многоугольник. Описание: FillPolty (числ_коозд, коорд_верш). Примечания: Параметр " коорд_верш" является нетипизированным параметром, который содержит координаты каждого пересечения сторон в многоугольнике. Параметр " числ_коорд" задает число координат в " коорд_верш". Координата состоит из двух слов: значения х и значения y. Данная процедура вычисляет все горизонтальные пересечения и заполняет многоугольник, используя текущий тип и цвет линии и текущий тип и цвет закраски. При вычерчивании контура многоугольника используется текущий тип линии и цвет, которые устанавливаются процедурой SetLineStyle.
|
Последнее изменение этой страницы: 2020-02-16; Просмотров: 123; Нарушение авторского права страницы