Процедура Writeln в Pascal

Помимо зарезервированного слова Write, для вывода сообщения на экран в Pascal используется процедура Writeln. Отличие процедуры Writeln от оператора Write заключается в том, что Writeln после вывода сообщения на экран переводит курсор на другую ...

Тип данных Char. Функции Ord, Chr.

Мы с Вами уже рассмотрели типы данных, которые позволяют хранить и обрабатывать целые числа (integer) и дробные числа (real). Теперь рассмотрим тип данных, позволяющий хранить и обрабатывать различные символы. Символы – это все буквы и значки, ...

Использование Var, Integer, Readln.

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

Циклы и массивы

Многомерные массивы.

Индексы имеют еще одно свойство — чем больше объем массива, тем менее эффективна с ним работа, поэтому часто используют массивы массивов, то есть с двумя, тремя и более индексами для идентификации ...

Вложенный арифметический цикл.

Под вложенным арифметическим циклом понимают такую алгоритмическую структуру, при которой в тело одного цикла с параметром включен другой цикл со своим параметром.

Процедура SetLineStyle устанавливает толщину и тип линии. Эта процедура влияет на все линии, которые заданы процедурами Line, LineTo, Rectangle, DrawPoly, Arc, Circle и др.

 Рисование различных типов линий.




Program Graphika9;
Uses Graph;
var i,s:integer;
Procedure Graphinterface;
Var  gd, gm, error:Integer;
s:String;
Begin
gd:=detect;
s:=' ';
Initgraph(gd,gm,s);
error:=GraphResult;
if error<>GrOk then
begin
writeln(GraphErrorMsg(Error));
Halt(error)
end
end;
begin
Graphinterface;
s:=100;
for i:=0 to 3 do
begin
setlinestyle (i,0,1);
line (s,20,s,300);
s:=s+50;
end;
readln;
closegraph;
end.



В строке №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. В таблице представлены различные типы линий и соответствующие им константы.

Grafika v Pascal,tipih liniyj

 В нашем примере первому параметру, определяющему тип линии, соответствует переменная «i». (строка №23). Благодаря циклу, тип линии будет меняться, принимая значения от 0 до 3. Я намеренно не включил в цикл значение 4, которое определяет пользовательский тип линии. Об этом поговорим позже.
Второй параметр в процедуре SetLineStyle описывает образец линии. Об этом параметре мы также поговорим позже. На данном этапе следует сказать, что этот параметр всегда принимает значение 0, если первый параметр принимает значение от 0 до 3. В нашем случае первый параметр процедуры SetLineStyle задается переменной «i», которая может принимать значения только 0, 1, 2 и 3. Поэтому второй параметр будет равен 0.
Третий параметр в процедуре SetLineStyle задает толщину линии и может принимать только 2 значения: либо 1, либо 3.

Grafika v Pascal,tolthina liniyj

Из таблицы видно, что если третий параметр в процедуре SetLineStyle равен 1, то будет рисоваться линия в один пиксел, если равен 3, то – в три пиксела.
Вместо числовых констант можно записывать название того или иного параметра. Например, в нашей программе строку №23 можно записать так: «setlinestyle (i,0,Normwidth);».

Строка №24. Задаем линию.

Строка №25. В переменную «s» записываем новое значение, которое больше старого значения на 50 пикселей.
Благодаря тому, что строки №23, №24 и №25 находятся в цикле, на экран будет выведено 4 линии разных типов. Координаты по оси Y этих линий будут одинаковыми, а координата по оси X будет увеличиваться на 50 пикселей при выводе на экран следующей линии.

setlinestyle

setlinestyle.


В нашем примере мы рассмотрели 4 типа линий, однако, как уже было сказано, существует 5-ый тип, который задается пользователем. При этом пользователь должен задать образец линии, который записывается во 2-ом параметре. Образец задается с помощью 4-х шестнадцатеричных чисел (от 0 до F). Если вы помните, то каждое шестнадцатеричное число кодируется 4-мя двоичными битами. На рис. показано соответствие между шестнадцатеричным числом и двоичным числом.

Grafika v Pascal,tipih liniyj,poljzovateljskiyj tip

Там где бит, имеет значение 1, в линии ставится штрих, а там где – 0, не ставится.
Например, зададим в качестве 2-го параметра 4 шестнадцатеричных числа F 5 F 5. Запишем эти числа в двоичном коде, согласно таблице сверху : 1111 0101 1111 0101.
На рис. снизу представлен увеличенный фрагмент линии, заданный с помощью пользовательских параметров.

Grafika v Pascal,tipih liniyj,poljzovateljskiyj tip.

В этой линии штрихи определяются цифрой 1, а пропуски – цифрой 0. Сначало идет 4 штриха, затем 1 пропуск, затем 1 штрих, затем один пропуск, затем 5 штрихов (дальше все повторяется). Т.е. эта линия соответствует параметру F 5 F 5.


Теперь изменим предыдущую программу.




Program Graphika10;
Uses Graph;
var i,s:integer;
Procedure Graphinterface;
Var  gd, gm, error:Integer;
s:String;
Begin
gd:=detect;
s:=' ';
Initgraph(gd,gm,s);
error:=GraphResult;
if error<>GrOk then
begin
writeln(GraphErrorMsg(Error));
Halt(error)
end
end;
begin
Graphinterface;
s:=100;
for i:=0 to 4 do
begin
setlinestyle (i,$f5f5,3);
line (s,20,s,300);
s:=s+50;
end;
readln;
closegraph;
end.



В строке №21 переменная «i» в цикле будет менять значение от 0 до 4.

В строке №23 запишем процедуру SetLineStyle и параметры для нее. В качестве второго параметра укажем значение «F5F5». Перед указанием этого параметра ставится знак доллара $. В качестве 3-го параметра укажем значение 3 (т.е. жирная линия).

setlinestyle..

setlinestyle...


Предыдущая статья : Процедура ClearDevice, SetBkColor.

Оглавление : Уроки Паскаль. Графика.

Следующая статья : Процедуры Rectangle и Bar.


Комментарии  

 
+1 # nurbeksoft 16.03.2013 13:39
мне кажется что qbasic легче...
 
   ГлавнаяПаскальГрафика в ПаскальВключение графического режима.