Что такое код getfillpattern

Закраска и заполнение замкнутых областей Free Pascal

В этом разделе речь пойдет о закрашивании замкнутых областей любым цветом или их заполнение фиксированным цветным узором — шаблоном заливки. Шаблон заливки задается массивом 8 8 бит, где каждый единичный разряд окрашивается указанным цветом, а каждый нулевой разряд — цветом фона. Представьте себе, что весь графический экран покрыт такими узорными квадратиками, примыкающими друг к другу по горизонтали и вертикали. Наложим на этот узор контур замкнутой области, и та часть узора, которая ограничена контуром, используется для окраски внутренней или внешней части нашей фигуры. Если шаблон заполнен только еди- ничными разрядами, то закраска ведется сплошным цветом. Наличие единичных разрядов только в отдельных строках шаблона (например, хотя бы в одной) приво- дит к горизонтальной штриховке области. Варьирование комбинаций нулей и еди- ниц в шаблоне позволяет создавать довольно много различных узоров — до 32 63.

В графической библиотеке BGI предусмотрено 13 стандартных шаблонов за-

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

Аргументом этой процедуры является запись типа FillSettingsType, содер- жащая всего два поля:

type FillSettingsType = record pattern: Word; // номер шаблона color: Word; // код цветности

Заливается цветом фона (все биты шаблона нулевые)

Заливается цветом color

Штриховка горизонтальными линиями

Тонкая штриховка под 45

Толстая штриховка под 45

Толстая штриховка под 135

Тонкая штриховка под 135

Двойная штриховка (0 и 90 )

Двойная штриховка (45 и 135 )

Короткие чередующиеся штрихи

Редкий точечный растр

Густой точечный растр

Заполнение шаблоном пользователя

Шаблон пользователя устанавливается с помощью процедуры SetFillPattern: SetFillPattern(fill_pat,color);

Первый параметр представляет собой 8-байтовый массив, биты которого сфор- мированы по желанию пользователя. Например, шаблон, напоминающий кирпич- ную стену, образованную окрашенными кирпичиками, может быть задан следую- щим образом:

В этом разделе речь пойдет о закрашивании замкнутых областей любым цветом или их заполнение фиксированным цветным узором — шаблоном заливки. Шаблон заливки задается массивом 8 8 бит, где каждый единичный разряд окрашивается указанным цветом, а каждый нулевой разряд — цветом фона. Представьте себе, что весь графический экран покрыт такими узорными квадратиками, примыкающими друг к другу по горизонтали и вертикали. Наложим на этот узор контур замкнутой области, и та часть узора, которая ограничена контуром, используется для окраски внутренней или внешней части нашей фигуры. Если шаблон заполнен только еди- ничными разрядами, то закраска ведется сплошным цветом. Наличие единичных разрядов только в отдельных строках шаблона (например, хотя бы в одной) приво- дит к горизонтальной штриховке области. Варьирование комбинаций нулей и еди- ниц в шаблоне позволяет создавать довольно много различных узоров — до 32 63.

В графической библиотеке BGI предусмотрено 13 стандартных шаблонов за-

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

Аргументом этой процедуры является запись типа FillSettingsType, содер- жащая всего два поля:

type FillSettingsType = record pattern: Word; // номер шаблона color: Word; // код цветности

Заливается цветом фона (все биты шаблона нулевые)

Заливается цветом color

Штриховка горизонтальными линиями

Тонкая штриховка под 45

Толстая штриховка под 45

Толстая штриховка под 135

Тонкая штриховка под 135

Двойная штриховка (0 и 90 )

Двойная штриховка (45 и 135 )

Короткие чередующиеся штрихи

Редкий точечный растр

Густой точечный растр

Заполнение шаблоном пользователя

Шаблон пользователя устанавливается с помощью процедуры SetFillPattern: SetFillPattern(fill_pat,color);

Первый параметр представляет собой 8-байтовый массив, биты которого сфор- мированы по желанию пользователя. Например, шаблон, напоминающий кирпич- ную стену, образованную окрашенными кирпичиками, может быть задан следую- щим образом:

Около сотни нестандартных узоров вы можете найти в книге [20].

Процедуры и функции, используемые для работы с залитыми областями, при- ведены в табл. 15.8.

Формат обращения к процедуре

Построение залитого прямоугольника

Заливка внутренней или внешней части замкнутой области

Формат обращения к процедуре

Построение залитого эллипса

Построение залитого многоугольника

Опрос текущего шаблона заливки

Опрос параметров заливки

Построение залитого сектора окружности

Построение залитого сектора эллипса

Задание пользовательского шаблона

Установка режима заливки

Пример использования процедуры Bar в режиме заливки сплошным цветом приводился в разд. 15.3. Результат работы соответствующей программы показыва- ет, что цветной прямоугольник строится без обводки границ. Чтобы построить цветной прямоугольник с четко очерченной границей другого цвета, надо обра- титься к двум последовательным процедурам (листинг 15.7).

Листинг 15.7. Программа fill1

program fill1; uses graph; var

gd:=D8bit; gm:=m800x600; initgraph(gd,gm,”);

SetFillPattern(pat94,4); // назначение шаблона пользователя SetFillStyle(UserFill,4); // установка режима заливки Bar(10,10,100,100); // отображение прямоугольника без границы Rectangle(9,9,101,101); // обводка границы

Результат ее работы в истинных цветах представлен на рис. 15.8.

Рис. 15.8. Обводка границ прямоугольника

Процедура Bar3D ориентирована, главным образом, на построение трехмерных столбчатых диаграмм. В графиках такого рода основным элементом является либо однородный цветной столбик с «крышей», либо столбик без «крыши», над которым можно надстроить еще один или несколько столбиков с другой раскраской. Обра- щение к процедуре Bar3D требует задания следующих параметров:

Bar3D(x1, y1, x2, y2, depth, top);

Первые четыре аргумента задают угловые точки передней панели столбика. Параметр depth определяет глубину столбика и иногда его рекомендуют выбирать равным четверти ширины (deph=0.25*(x2-x1)). Естественно, что все эти парамет- ры целочисленные и неотрицательные, задаются они в пикселах. Последний аргу- мент top — логического типа. Если он равен True, то крыша столбика рисуется, в противном случае столбик воспроизводится без крыши, и это дает возможность надстроить над ним следующий столбик и не заботиться об удалении невидимых линий. Приведенный в листинге 15.8 пример демонстрирует возможность воспро- изведения одиночного (с крышей) и составного столбика (нижний — без крыши, верхний — с крышей).

Листинг 15.8. Программа bar3d_1

program bar3d_1; uses graph;

gd,gm: SmallInt; begin

gd:=D8bit; gm:=m800x600; initgraph(gd,gm,”); SetColor(Green);

Результат работы этой программы приведен на рис. 15.9.

Рис. 15.9. Элементы столбчатых диаграмм

Иногда к процедуре Bar3D обращаются с нулевым значением параметра depth. В этом случае можно построить залитый прямоугольник с четко выделенной гра- ницей.

Процедура FloodFill предназначена для заливки или штриховки внутренней или внешней части замкнутого контура:

FloodFill(x, y, bord_col);

Параметр bord_col задает цвет пикселов, составляющих непрерывную границу области. Если точка с координатами (x, y) находится внутри области, то обработке подвергается внутренняя часть замкнутого контура. В противном случае окраска (штриховка) выполняется для внешней части контура. Разрыв границы контура да- же на один пиксел приведет к тому, что краска (штриховка) «просочится» на про- тивоположную часть контура и залитым окажется весь экран или большая его часть. Последнее может произойти, если на пути краски встретится еще один замк- нутый контур с таким же цветом границы. Если цвет заливки, установленный в од- ной из процедур SetFillPattern или SetFillStyle, не совпадает с цветом грани- цы, то цвет контура после работы процедуры FloodFill остается прежним. Однако оба указанных цвета могут совпасть, и тогда залитая область лишится ярко выра- женного цвета границы. Повторная перекраска такой области с помощью процеду- ры FloodFill уже невозможна.

Процедура FillEllipse предназначена для построения залитого эллипса. При

необходимости его граница может быть очерчена с помощью процедуры Ellipse.

Илон Маск рекомендует:  Что такое код odbc_result

Параметры процедуры FillPoly совпадают с аргументами процедуры DrawPoly

Листинг 1 5 .9 . Программа f_polygon

program f_polygon; uses graph;

xy: array [1..4] of PointType; begin

gd:=D8bit; gm:=m800x600; initgraph(gd,gm,”); SetColor(Green);

FillPoly(4,xy); readln; CloseGraph;

Залитый по этой программе треугольник представлен на рис. 15.10.

Рис. 15.10. Заливка многоугольника

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

Рис. 15.11. Круговая диаграмма

Опрос текущих параметров заливки осуществляется с помощью процедур Get- FillSettings и GetFillPattern.

Источник: Кетков, Ю. Л., Свободное программное обеспечение. FREE PASCAL для студентов и школьников, Ю. Л. Кетков, А. Ю. Кетков. — СПб.: БХВ-Петербург, 2011. — 384 с.: ил. + CD-ROM — (ИиИКТ)

В этом разделе речь пойдет о закрашивании замкнутых областей любым цветом или их заполнение фиксированным цветным узором — шаблоном заливки. Шаблон заливки задается массивом 8 8 бит, где каждый единичный разряд окрашивается указанным цветом, а каждый нулевой разряд — цветом фона. Представьте себе, что весь графический экран покрыт такими узорными квадратиками, примыкающими друг к другу по горизонтали и вертикали. Наложим на этот узор контур замкнутой области, и та часть узора, которая ограничена контуром, используется для окраски внутренней или внешней части нашей фигуры. Если шаблон заполнен только еди- ничными разрядами, то закраска ведется сплошным цветом. Наличие единичных разрядов только в отдельных строках шаблона (например, хотя бы в одной) приво- дит к горизонтальной штриховке области. Варьирование комбинаций нулей и еди- ниц в шаблоне позволяет создавать довольно много различных узоров — до 32 63.

В графической библиотеке BGI предусмотрено 13 стандартных шаблонов за-

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

Аргументом этой процедуры является запись типа FillSettingsType, содер- жащая всего два поля:

type FillSettingsType = record pattern: Word; // номер шаблона color: Word; // код цветности

Что такое код RegEx, который позволяет использовать только буквенно-цифровой ввод?

Я пытаюсь проверить запрос var для людей, вводящих их адрес, например:

До сих пор мой код RegEx:

Это позволит ввести буквенно-цифровые символы, а также пробелы, если это необходимо. Однако это все еще не мешает людям вводить специальные символы.

Как я мог это сделать?

1 ответ

Просто для регулярного выражения вы можете проверить свой материал здесь: https://regex101.com/, этот инструмент также объясняет, что происходит с вашим регулярным выражением.

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

Вы также должны размещать свой код здесь, regex самостоятельно не решит вашу проблему.

POI XSSFCellStyle рисования границ с PropertyTemplate, когда клетка setFillForegroundColor и SetFillPattern установлены, превращает клетку укомплектовать черный

Я нашел следующий вопрос, который похож, но не совсем то же самое:

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

Тогда я применяю его в клетку с помощью setCellStyle.

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

Я использую propertyTemplate.drawBorders (диапазон, borderType, цвет степени);

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

Когда я закомментируйте setFillPattern в headerStyle, я могу видеть границы правильно, но цвет переднего плана белый, как будто setFillForegroundColor не было никакого набора (даже если он есть).

Я попытался с помощью setFillBackgroundColor как хорошо, но я получаю тот же результат.

Кто-нибудь есть идеи, где я мог бы идти неправильно или это известно (или неизвестно?) Ошибка?

Turbo Pascal Documentation

Процедура SetFillPattern

Функция: Выбирает заданный пользователем образец зак-
раски.
Описание: SetFillPattern(Pattern : FillPatternType;
Color : word)
Примечания: Устанавливает тип закраски и ее цвет для
всех типов закраски, выполняемых процедурами FillPoly, Bar,
FloodFill, Bar3D и PieSlice, битовый образец закраски, зада-
ваемый процедурой Pattern, и цвет, задаваемый процедурой
Color. Тип FillPatternType предварительно определяется сле-
дующим образом:

type
FillPatternType = array[1..8] of byte;

Образец закраски основывается на внутренних байтовых значе-
ниях, содержащихся в массиве Pattern. Этот массив имеет дли-
ну 8 байтов и каждый байт 8 элементам изображения в образце
закраски. Если бит в байте образца закраски принимает значе-
ние 1, то элемент изображения будет построен. Следующий об-
разец закраски представляет собой, например, закраску в виде
«шахматной доски» (50% полутон):

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Двоичный вид Шестнадцатиричный вид
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
10101010 = AA (первый байт)
01010101 = 55 (второй байт)
10101010 = AA (третий байт)
01010101 = 55 (четвертый байт)
10101010 = AA (пятый байт)
01010101 = 55 (шестой байт)
10101010 = AA (седьмой байт)
01010101 = 55 (восьмой байт)
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Определенные пользователем типы закраски позволяют вам
создавать типы закраски, отличающиеся от заранее
определенных, которые могут выбираться с помощью процедуры
SetFillStyle. Всякий раз, когда вы выбираете новый образец
закраски с помощью процедур SetFillPattern или SetFillStyle
все операции закраски будут выполняться с использованием
этого типа закраски. При обращении вида
SetFillStyle(UserField, SomeColor) всегда будет выбираться
образец, заданный пользователем. Это позволяет вам опреде-
лять и использовать с помощью процедуры SetFillPattern новый
образей закраски, а затем переходить от встроенного обраца
закраски к новому, заданному вами, обращаясь к процедуре
YetTextStyle.
Аналогичная программа имеется в версии 2.0 Турбо-Си.
Ограничения: Должен использоваться графический режим.
Пример:

uses
Graph;
const
Gray50 : FillPatternType = (AA, 55, AA, 55, AA, 55,
AA, 55);
var
Driver, Mode: integer;
begin
Driver := Detect; < перевести в графический режим >
InitGraph(Driver, Mode, »);
if GraphResult <> 0 then
Halt(1)
SetFillPattern(Gray50, White);
Bar(0, 0, 100, 100); < нарисовать столбец, используя 50%
полутон >
Readln;
CloseGraph;
end.

Software & Finance

setfillstyle function is used to set the fill style and color value where as setfillpattern defines the pattern with 8 X 8 matrix (live given below) that is with array of 8 characters.

1010 1010 = 0xAA

0101 0101 = 0x55

1010 1010 = 0xAA

0101 0101 = 0x55

1010 1010 = 0xAA

0101 0101 = 0x55

1010 1010 = 0xAA

0101 0101 = 0x55

Another example would be,

1111 1111 = 0xFF

0000 0000 = 0x00

1111 1111 = 0xFF

0000 0000 = 0x00

1111 1111 = 0xFF

0000 0000 = 0x00

1111 1111 = 0xFF

0000 0000 = 0x00

Just the change the upattern values upattern_solid values and see how the output changes:

The possible style values used in setfillstyle function are, EMPTY_FILL, SOLID_FILL, LINE_FILL, LTSLASH_FILL, SLASH_FILL, BKSLASH_FILL, LTBKSLASH_FILL, HATCH_FILL, XHATCH_FILL, INTERLEAVE_FILL, WIDE_DOT_FILL, CLOSE_DOT_FILL, USER_FILL

The possible color values are from 0 — 15 BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, DARKGRAY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE

Look at the following lines of code in the given example: Initially setfillstyle is used to set the SOLID_FILL and WHITE color. Then it got changed immediately with user defined pattern (0xFF or 255) that also represents SOLID_FILL with BLUE color. You can change the array values of upattern_solid with any other values to change the pattern. Now getfillsettings would retrive the recently set values by setfillpattern — USER_FILL (12) and BLUE (1).

Илон Маск рекомендует:  Iis приостановка ftp сервера (pauseftp)

В В В В В setfillstyle(SOLID_FILL, WHITE);

В В В В В // The above fillstyle is modifie with the user defined pattern.

В В В В В setfillpattern(upattern_solid, BLUE);

Процедура SetFillPattern

Устанавливает образец рисунка и цвет штриховки. Заголовок:

Procedure SetFillPattern(Pattern: FillPatternType;Color: Word);

Здесь Pattern – выражение типа FillPatternType; устанавливает образец рисунка для Fill – UserFill в процедуре SetFillStyle; Color – цвет заполнения.

Образец рисунка задается в виде матрицы из 8×8 пикселей и может быть представлен массивом из 8 байт следующего типа:

FillPatternType = array [1..8] of Byte;

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

На рис. 4.8 показан пример двух образцов заполнения. На рисунке черточкой обозначается несветящийся пиксель, а прямоугольником — светящийся. Для каждых 8 пикселей приводится шестнадцатеричный код соответствующего байта.

Следующая программа заполняет этими образцами две прямоугольных области экрана.

Рис. 4.8. Образцы заполнения и их коды

pattl: FillPatternType= ($49,$92,$49,$92,$49,$92,$49,$92);

patt2: FillPatternType= ($00,$18,$24,$42,$42,$24,$18,$00);

d := Detect; InitGraph(d, r, »);

e := GraphResult; if e <> grOk then

Bar(0,0,GetMaxX div 2, GetMaxY div 2);

Bar(GetMaxX div 2,GetMaxY div 2,GetMaxX,GetMaxY);

if ReadKey=#0 then d := ord(ReadKey);

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

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

содержит недопустимо большой для данного режима код цвета и обращение игнорируется. Сказанное, однако, не относится к процедуре SetFillStyle для значения параметра Fill в диапазоне от 0 до 11: программа будет нормально работать и в режиме высокого разрешения CGA-адаптера, причем все цвета палитры, кроме цвета фона, при этом заменяются на белый.

set Fill Pattern(_: color Components:)

Sets the fill pattern in the specified graphics context.

Declaration

Parameters

A fill pattern. The object is retained; upon return, you may safely release it.

If the pattern is an uncolored (or a masking) pattern, pass an array of intensity values that specify the color to use when the pattern is painted. The number of array elements must equal the number of components in the base space of the fill pattern color space, plus an additional component for the alpha value.

If the pattern is a colored pattern, pass an alpha value.

Discussion

The current fill color space must be a pattern color space. Otherwise, the result of calling this function is undefined. If you want to set a fill color, not a pattern, use set Fill Color(_:) .

Turbo Pascal Documentation

Процедура SetFillPattern

Функция: Выбирает заданный пользователем образец зак-
раски.
Описание: SetFillPattern(Pattern : FillPatternType;
Color : word)
Примечания: Устанавливает тип закраски и ее цвет для
всех типов закраски, выполняемых процедурами FillPoly, Bar,
FloodFill, Bar3D и PieSlice, битовый образец закраски, зада-
ваемый процедурой Pattern, и цвет, задаваемый процедурой
Color. Тип FillPatternType предварительно определяется сле-
дующим образом:

type
FillPatternType = array[1..8] of byte;

Образец закраски основывается на внутренних байтовых значе-
ниях, содержащихся в массиве Pattern. Этот массив имеет дли-
ну 8 байтов и каждый байт 8 элементам изображения в образце
закраски. Если бит в байте образца закраски принимает значе-
ние 1, то элемент изображения будет построен. Следующий об-
разец закраски представляет собой, например, закраску в виде
«шахматной доски» (50% полутон):

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Двоичный вид Шестнадцатиричный вид
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
10101010 = AA (первый байт)
01010101 = 55 (второй байт)
10101010 = AA (третий байт)
01010101 = 55 (четвертый байт)
10101010 = AA (пятый байт)
01010101 = 55 (шестой байт)
10101010 = AA (седьмой байт)
01010101 = 55 (восьмой байт)
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Определенные пользователем типы закраски позволяют вам
создавать типы закраски, отличающиеся от заранее
определенных, которые могут выбираться с помощью процедуры
SetFillStyle. Всякий раз, когда вы выбираете новый образец
закраски с помощью процедур SetFillPattern или SetFillStyle
все операции закраски будут выполняться с использованием
этого типа закраски. При обращении вида
SetFillStyle(UserField, SomeColor) всегда будет выбираться
образец, заданный пользователем. Это позволяет вам опреде-
лять и использовать с помощью процедуры SetFillPattern новый
образей закраски, а затем переходить от встроенного обраца
закраски к новому, заданному вами, обращаясь к процедуре
YetTextStyle.
Аналогичная программа имеется в версии 2.0 Турбо-Си.
Ограничения: Должен использоваться графический режим.
Пример:

uses
Graph;
const
Gray50 : FillPatternType = (AA, 55, AA, 55, AA, 55,
AA, 55);
var
Driver, Mode: integer;
begin
Driver := Detect; < перевести в графический режим >
InitGraph(Driver, Mode, »);
if GraphResult <> 0 then
Halt(1)
SetFillPattern(Gray50, White);
Bar(0, 0, 100, 100); < нарисовать столбец, используя 50%
полутон >
Readln;
CloseGraph;
end.

POI XSSFCellStyle рисует границы с помощью PropertyTemplate, когда устанавливаются ячейки setFillForegroundColor и SetFillPattern, полностью закрывает ячейку

Я нашел следующий вопрос, похожий, но не совсем такой:

Поэтому я создаю XSSFCellStyle для заголовков моей таблицы и давая им цвет переднего плана со следующим:

Затем я применяю его к ячейке с помощью setCellStyle.

Все там работает нормально, пока я не попытаюсь добавить границу вокруг этих/этих ячеек.

Я использую свойствоTemplate.drawBorders (диапазон, borderType, цвет, размер);

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

Когда я комментирую setFillPattern в headerStyle, я вижу границы правильно, но тогда цвет переднего плана белый, как если бы setFillForegroundColor не был установлен (хотя это и есть).

Я также пробовал использовать setFillBackgroundColor, но получаю те же результаты.

Кто-нибудь знает, где я могу ошибиться или это известная (или неизвестная?) Ошибка?

Закраска и заполнение замкнутых областей Free Pascal

В этом разделе речь пойдет о закрашивании замкнутых областей любым цветом или их заполнение фиксированным цветным узором — шаблоном заливки. Шаблон заливки задается массивом 8 8 бит, где каждый единичный разряд окрашивается указанным цветом, а каждый нулевой разряд — цветом фона. Представьте себе, что весь графический экран покрыт такими узорными квадратиками, примыкающими друг к другу по горизонтали и вертикали. Наложим на этот узор контур замкнутой области, и та часть узора, которая ограничена контуром, используется для окраски внутренней или внешней части нашей фигуры. Если шаблон заполнен только еди- ничными разрядами, то закраска ведется сплошным цветом. Наличие единичных разрядов только в отдельных строках шаблона (например, хотя бы в одной) приво- дит к горизонтальной штриховке области. Варьирование комбинаций нулей и еди- ниц в шаблоне позволяет создавать довольно много различных узоров — до 32 63.

В графической библиотеке BGI предусмотрено 13 стандартных шаблонов за-

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

Аргументом этой процедуры является запись типа FillSettingsType, содер- жащая всего два поля:

type FillSettingsType = record pattern: Word; // номер шаблона color: Word; // код цветности

Заливается цветом фона (все биты шаблона нулевые)

Заливается цветом color

Штриховка горизонтальными линиями

Тонкая штриховка под 45

Толстая штриховка под 45

Толстая штриховка под 135

Илон Маск рекомендует:  column-width в CSS

Тонкая штриховка под 135

Двойная штриховка (0 и 90 )

Двойная штриховка (45 и 135 )

Короткие чередующиеся штрихи

Редкий точечный растр

Густой точечный растр

Заполнение шаблоном пользователя

Шаблон пользователя устанавливается с помощью процедуры SetFillPattern: SetFillPattern(fill_pat,color);

Первый параметр представляет собой 8-байтовый массив, биты которого сфор- мированы по желанию пользователя. Например, шаблон, напоминающий кирпич- ную стену, образованную окрашенными кирпичиками, может быть задан следую- щим образом:

В этом разделе речь пойдет о закрашивании замкнутых областей любым цветом или их заполнение фиксированным цветным узором — шаблоном заливки. Шаблон заливки задается массивом 8 8 бит, где каждый единичный разряд окрашивается указанным цветом, а каждый нулевой разряд — цветом фона. Представьте себе, что весь графический экран покрыт такими узорными квадратиками, примыкающими друг к другу по горизонтали и вертикали. Наложим на этот узор контур замкнутой области, и та часть узора, которая ограничена контуром, используется для окраски внутренней или внешней части нашей фигуры. Если шаблон заполнен только еди- ничными разрядами, то закраска ведется сплошным цветом. Наличие единичных разрядов только в отдельных строках шаблона (например, хотя бы в одной) приво- дит к горизонтальной штриховке области. Варьирование комбинаций нулей и еди- ниц в шаблоне позволяет создавать довольно много различных узоров — до 32 63.

В графической библиотеке BGI предусмотрено 13 стандартных шаблонов за-

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

Аргументом этой процедуры является запись типа FillSettingsType, содер- жащая всего два поля:

type FillSettingsType = record pattern: Word; // номер шаблона color: Word; // код цветности

Заливается цветом фона (все биты шаблона нулевые)

Заливается цветом color

Штриховка горизонтальными линиями

Тонкая штриховка под 45

Толстая штриховка под 45

Толстая штриховка под 135

Тонкая штриховка под 135

Двойная штриховка (0 и 90 )

Двойная штриховка (45 и 135 )

Короткие чередующиеся штрихи

Редкий точечный растр

Густой точечный растр

Заполнение шаблоном пользователя

Шаблон пользователя устанавливается с помощью процедуры SetFillPattern: SetFillPattern(fill_pat,color);

Первый параметр представляет собой 8-байтовый массив, биты которого сфор- мированы по желанию пользователя. Например, шаблон, напоминающий кирпич- ную стену, образованную окрашенными кирпичиками, может быть задан следую- щим образом:

Около сотни нестандартных узоров вы можете найти в книге [20].

Процедуры и функции, используемые для работы с залитыми областями, при- ведены в табл. 15.8.

Формат обращения к процедуре

Построение залитого прямоугольника

Заливка внутренней или внешней части замкнутой области

Формат обращения к процедуре

Построение залитого эллипса

Построение залитого многоугольника

Опрос текущего шаблона заливки

Опрос параметров заливки

Построение залитого сектора окружности

Построение залитого сектора эллипса

Задание пользовательского шаблона

Установка режима заливки

Пример использования процедуры Bar в режиме заливки сплошным цветом приводился в разд. 15.3. Результат работы соответствующей программы показыва- ет, что цветной прямоугольник строится без обводки границ. Чтобы построить цветной прямоугольник с четко очерченной границей другого цвета, надо обра- титься к двум последовательным процедурам (листинг 15.7).

Листинг 15.7. Программа fill1

program fill1; uses graph; var

gd:=D8bit; gm:=m800x600; initgraph(gd,gm,”);

SetFillPattern(pat94,4); // назначение шаблона пользователя SetFillStyle(UserFill,4); // установка режима заливки Bar(10,10,100,100); // отображение прямоугольника без границы Rectangle(9,9,101,101); // обводка границы

Результат ее работы в истинных цветах представлен на рис. 15.8.

Рис. 15.8. Обводка границ прямоугольника

Процедура Bar3D ориентирована, главным образом, на построение трехмерных столбчатых диаграмм. В графиках такого рода основным элементом является либо однородный цветной столбик с «крышей», либо столбик без «крыши», над которым можно надстроить еще один или несколько столбиков с другой раскраской. Обра- щение к процедуре Bar3D требует задания следующих параметров:

Bar3D(x1, y1, x2, y2, depth, top);

Первые четыре аргумента задают угловые точки передней панели столбика. Параметр depth определяет глубину столбика и иногда его рекомендуют выбирать равным четверти ширины (deph=0.25*(x2-x1)). Естественно, что все эти парамет- ры целочисленные и неотрицательные, задаются они в пикселах. Последний аргу- мент top — логического типа. Если он равен True, то крыша столбика рисуется, в противном случае столбик воспроизводится без крыши, и это дает возможность надстроить над ним следующий столбик и не заботиться об удалении невидимых линий. Приведенный в листинге 15.8 пример демонстрирует возможность воспро- изведения одиночного (с крышей) и составного столбика (нижний — без крыши, верхний — с крышей).

Листинг 15.8. Программа bar3d_1

program bar3d_1; uses graph;

gd,gm: SmallInt; begin

gd:=D8bit; gm:=m800x600; initgraph(gd,gm,”); SetColor(Green);

Результат работы этой программы приведен на рис. 15.9.

Рис. 15.9. Элементы столбчатых диаграмм

Иногда к процедуре Bar3D обращаются с нулевым значением параметра depth. В этом случае можно построить залитый прямоугольник с четко выделенной гра- ницей.

Процедура FloodFill предназначена для заливки или штриховки внутренней или внешней части замкнутого контура:

FloodFill(x, y, bord_col);

Параметр bord_col задает цвет пикселов, составляющих непрерывную границу области. Если точка с координатами (x, y) находится внутри области, то обработке подвергается внутренняя часть замкнутого контура. В противном случае окраска (штриховка) выполняется для внешней части контура. Разрыв границы контура да- же на один пиксел приведет к тому, что краска (штриховка) «просочится» на про- тивоположную часть контура и залитым окажется весь экран или большая его часть. Последнее может произойти, если на пути краски встретится еще один замк- нутый контур с таким же цветом границы. Если цвет заливки, установленный в од- ной из процедур SetFillPattern или SetFillStyle, не совпадает с цветом грани- цы, то цвет контура после работы процедуры FloodFill остается прежним. Однако оба указанных цвета могут совпасть, и тогда залитая область лишится ярко выра- женного цвета границы. Повторная перекраска такой области с помощью процеду- ры FloodFill уже невозможна.

Процедура FillEllipse предназначена для построения залитого эллипса. При

необходимости его граница может быть очерчена с помощью процедуры Ellipse.

Параметры процедуры FillPoly совпадают с аргументами процедуры DrawPoly

Листинг 1 5 .9 . Программа f_polygon

program f_polygon; uses graph;

xy: array [1..4] of PointType; begin

gd:=D8bit; gm:=m800x600; initgraph(gd,gm,”); SetColor(Green);

FillPoly(4,xy); readln; CloseGraph;

Залитый по этой программе треугольник представлен на рис. 15.10.

Рис. 15.10. Заливка многоугольника

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

Рис. 15.11. Круговая диаграмма

Опрос текущих параметров заливки осуществляется с помощью процедур Get- FillSettings и GetFillPattern.

Источник: Кетков, Ю. Л., Свободное программное обеспечение. FREE PASCAL для студентов и школьников, Ю. Л. Кетков, А. Ю. Кетков. — СПб.: БХВ-Петербург, 2011. — 384 с.: ил. + CD-ROM — (ИиИКТ)

В этом разделе речь пойдет о закрашивании замкнутых областей любым цветом или их заполнение фиксированным цветным узором — шаблоном заливки. Шаблон заливки задается массивом 8 8 бит, где каждый единичный разряд окрашивается указанным цветом, а каждый нулевой разряд — цветом фона. Представьте себе, что весь графический экран покрыт такими узорными квадратиками, примыкающими друг к другу по горизонтали и вертикали. Наложим на этот узор контур замкнутой области, и та часть узора, которая ограничена контуром, используется для окраски внутренней или внешней части нашей фигуры. Если шаблон заполнен только еди- ничными разрядами, то закраска ведется сплошным цветом. Наличие единичных разрядов только в отдельных строках шаблона (например, хотя бы в одной) приво- дит к горизонтальной штриховке области. Варьирование комбинаций нулей и еди- ниц в шаблоне позволяет создавать довольно много различных узоров — до 32 63.

В графической библиотеке BGI предусмотрено 13 стандартных шаблонов за-

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

Аргументом этой процедуры является запись типа FillSettingsType, содер- жащая всего два поля:

type FillSettingsType = record pattern: Word; // номер шаблона color: Word; // код цветности

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL