ВУЗ:
Составители:
Рубрика:
101
Пример:
Построить круговую диаграмму.
Uses Graph,Crt;
var gmx, gmy, gd, gm, i:Integer;
Diagr:Array[1..5] of Word;
Sum, StA, endA:Word;
{$1 D:/pas/init.pas}
begin
{Ввод пяти чисел, отображаемых в виде диаграммы}
WriteLn(' 5 Numbers - ?');
Sum:=0;
for i:=1 to 5 do
Begin
Readln(Diagr [i]) ;
Sum:=Sum+Diagr [i] ;
end;
{Масштабирование значений введенных чисел}
For i:=1 To 5 Do
Diagr[i]:=Round(Diagr[i]/Sum*360) ;
{Инициализация графического режима, установка
цветов, параметров линий и начальных значений)
Init;
SetColor(Yellow) ;
SetBkColor(Blue) ;
SetLineStyle(0, 1, 1) ;
gmx:=GetMaxX div 2;
gmy:=GetMaxY div 2;
StA:=0;
endA:=0 ;
{Вывод секторов диаграммы}
for i:=1 to 5 do
begin
EndA: =EndA+Diagr[i] ;
SetFillStyle(1, i) ;
PieSlice(gmx, gmy, StA, EndA, gmy) ;
StA:=StA+Diagr[i] ;
end;
Repeat Until KeyPressed;
CloseGraph;
end.
102
PieSlice(X,Y:lnteger; StAngle, EndAngle,R:Word )- выводит на экран
сектор круга радиуса R с центром в точке X,Y, заполненный заданным в про-
цедуре SetFillPattern или SetFillStyle орнаментом, цвет которого определен в
процедуре SetFillStyle. Параметры StAngle и EndAngle определяют началь-
ный и конечный углы сектора. Они задается в градусах и отсчитывается от
горизонтальной оси против часовой стрелки.
Способы изображения движущихся фигур
Движение фрагментов объектов можно реализовать одним из четырёх
способов.
1. Выводить изображение различными цветами переднего плана
(пера), а затем, спустя время, стирать его – выводить то же самое изображе-
ние цветом фона. Затем вновь размещать это же изображение в несколько
смещённом положении и стирать его после задержки на экране. Траектория
движения определяется программой.
2. Выводить изображение прежним способом, но стирать его спе-
циальными фигурами (при помощи процедур): прямоугольником, эллипсом,
сектором и др. В этом случае габариты упомянутых фигур должны несколько
превышать габариты изображения.
3. Изображение подвижного фрагмента записывается в буфер, ко-
торый, из-за его большого объёма, размещается в динамической памяти.
Затем это изображение выводится из буфера последовательно в разные места
экрана. При этом перед очередным выводом изображения в предшествующем
месте (после задержки) стирается.
4. В некоторых режимах адаптера видеопамять разбита на части,
называемые видеостраницами. На каждую видеостраницу записываются
«картинки», на которых фрагменты изображения, предназначенные для
«оживления», расположены в разных местах экрана. Последовательная смена
видеостраниц создаёт эффект движения этих фрагментов изображения.
Пример:
Изобразите перемещение круга слева на право.
Uses Graph, CRT;
var i:Integer;
{Вставка описания процедуры инициализации}
{$l D:/pas/init.pas}
Пример: PieSlice(X,Y:lnteger; StAngle, EndAngle,R:Word )- выводит на экран
Построить круговую диаграмму. сектор круга радиуса R с центром в точке X,Y, заполненный заданным в про-
Uses Graph,Crt; цедуре SetFillPattern или SetFillStyle орнаментом, цвет которого определен в
var gmx, gmy, gd, gm, i:Integer; процедуре SetFillStyle. Параметры StAngle и EndAngle определяют началь-
Diagr:Array[1..5] of Word; ный и конечный углы сектора. Они задается в градусах и отсчитывается от
Sum, StA, endA:Word;
{$1 D:/pas/init.pas} горизонтальной оси против часовой стрелки.
begin
{Ввод пяти чисел, отображаемых в виде диаграммы} Способы изображения движущихся фигур
WriteLn(' 5 Numbers - ?');
Sum:=0; Движение фрагментов объектов можно реализовать одним из четырёх
for i:=1 to 5 do способов.
Begin
Readln(Diagr [i]) ; 1. Выводить изображение различными цветами переднего плана
Sum:=Sum+Diagr [i] ; (пера), а затем, спустя время, стирать его выводить то же самое изображе-
end; ние цветом фона. Затем вновь размещать это же изображение в несколько
{Масштабирование значений введенных чисел}
смещённом положении и стирать его после задержки на экране. Траектория
For i:=1 To 5 Do
Diagr[i]:=Round(Diagr[i]/Sum*360) ; движения определяется программой.
{Инициализация графического режима, установка 2. Выводить изображение прежним способом, но стирать его спе-
цветов, параметров линий и начальных значений)
циальными фигурами (при помощи процедур): прямоугольником, эллипсом,
Init;
SetColor(Yellow) ; сектором и др. В этом случае габариты упомянутых фигур должны несколько
SetBkColor(Blue) ; превышать габариты изображения.
SetLineStyle(0, 1, 1) ; 3. Изображение подвижного фрагмента записывается в буфер, ко-
gmx:=GetMaxX div 2;
gmy:=GetMaxY div 2; торый, из-за его большого объёма, размещается в динамической памяти.
StA:=0; Затем это изображение выводится из буфера последовательно в разные места
endA:=0 ; экрана. При этом перед очередным выводом изображения в предшествующем
{Вывод секторов диаграммы} месте (после задержки) стирается.
for i:=1 to 5 do
begin 4. В некоторых режимах адаптера видеопамять разбита на части,
EndA: =EndA+Diagr[i] ; называемые видеостраницами. На каждую видеостраницу записываются
SetFillStyle(1, i) ; «картинки», на которых фрагменты изображения, предназначенные для
PieSlice(gmx, gmy, StA, EndA, gmy) ; «оживления», расположены в разных местах экрана. Последовательная смена
StA:=StA+Diagr[i] ;
видеостраниц создаёт эффект движения этих фрагментов изображения.
end;
Repeat Until KeyPressed; Пример:
CloseGraph; Изобразите перемещение круга слева на право.
end. Uses Graph, CRT;
var i:Integer;
{Вставка описания процедуры инициализации}
{$l D:/pas/init.pas}
101 102
Страницы
- « первая
- ‹ предыдущая
- …
- 49
- 50
- 51
- 52
- 53
- …
- следующая ›
- последняя »
