ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »