Процедура SetLineStyle устанавливает толщину и тип линии. Эта процедура влияет на все линии, которые заданы процедурами Line, LineTo, Rectangle, DrawPoly, Arc, Circle и др.
Рисование различных типов линий.
В строке №3 записываем 2 переменные. Переменную «i» будем использовать в качестве счетчика цикла. Переменную «s» для изменения координат выводимых линий по оси X.
Строка №4 - №17. Процедура для запуска графического режима.
Строка №20. Присваиваем переменной «s» значение 100. Как мы уже сказали, эта переменная будет использоваться в качестве координаты X для вывода линии на экран. В строке №24 мы записываем процедуру Line и указываем для нее координаты. Как видно, координатами вывода линии будут координаты (100,20,100,300).
Строка №21. Записываем цикл. Переменная «i» в цикле будет менять свое значение от 0 до 3.
Строка №23.Здесь записывается процедура SetLineStyle. Эта процедура устанавливает тип и толщину линии. В скобках указываются 3 параметра этой линии. Первый параметр определяет тип линии и может принимать значения от 0 до 4. В таблице представлены различные типы линий и соответствующие им константы.
В нашем примере первому параметру, определяющему тип линии, соответствует переменная «i». (строка №23). Благодаря циклу, тип линии будет меняться, принимая значения от 0 до 3. Я намеренно не включил в цикл значение 4, которое определяет пользовательский тип линии. Об этом поговорим позже.
Второй параметр в процедуре SetLineStyle описывает образец линии. Об этом параметре мы также поговорим позже. На данном этапе следует сказать, что этот параметр всегда принимает значение 0, если первый параметр принимает значение от 0 до 3. В нашем случае первый параметр процедуры SetLineStyle задается переменной «i», которая может принимать значения только 0, 1, 2 и 3. Поэтому второй параметр будет равен 0.
Третий параметр в процедуре SetLineStyle задает толщину линии и может принимать только 2 значения: либо 1, либо 3.
Из таблицы видно, что если третий параметр в процедуре SetLineStyle равен 1, то будет рисоваться линия в один пиксел, если равен 3, то – в три пиксела.
Вместо числовых констант можно записывать название того или иного параметра. Например, в нашей программе строку №23 можно записать так: «setlinestyle (i,0,Normwidth);».
Строка №24. Задаем линию.
Строка №25. В переменную «s» записываем новое значение, которое больше старого значения на 50 пикселей.
Благодаря тому, что строки №23, №24 и №25 находятся в цикле, на экран будет выведено 4 линии разных типов. Координаты по оси Y этих линий будут одинаковыми, а координата по оси X будет увеличиваться на 50 пикселей при выводе на экран следующей линии.
В нашем примере мы рассмотрели 4 типа линий, однако, как уже было сказано, существует 5-ый тип, который задается пользователем. При этом пользователь должен задать образец линии, который записывается во 2-ом параметре. Образец задается с помощью 4-х шестнадцатеричных чисел (от 0 до F). Если вы помните, то каждое шестнадцатеричное число кодируется 4-мя двоичными битами. На рис. показано соответствие между шестнадцатеричным числом и двоичным числом.
Там где бит, имеет значение 1, в линии ставится штрих, а там где – 0, не ставится.
Например, зададим в качестве 2-го параметра 4 шестнадцатеричных числа F 5 F 5. Запишем эти числа в двоичном коде, согласно таблице сверху : 1111 0101 1111 0101.
На рис. снизу представлен увеличенный фрагмент линии, заданный с помощью пользовательских параметров.
В этой линии штрихи определяются цифрой 1, а пропуски – цифрой 0. Сначало идет 4 штриха, затем 1 пропуск, затем 1 штрих, затем один пропуск, затем 5 штрихов (дальше все повторяется). Т.е. эта линия соответствует параметру F 5 F 5.
Теперь изменим предыдущую программу.
В строке №21 переменная «i» в цикле будет менять значение от 0 до 4.
В строке №23 запишем процедуру SetLineStyle и параметры для нее. В качестве второго параметра укажем значение «F5F5». Перед указанием этого параметра ставится знак доллара $. В качестве 3-го параметра укажем значение 3 (т.е. жирная линия).
Предыдущая статья : Процедура ClearDevice, SetBkColor.
Оглавление : Уроки Паскаль. Графика.
Следующая статья : Процедуры Rectangle и Bar.
Комментарии