Читайте данную работу прямо на сайте или скачайте
Кадрирование, диаграмма и график. Геометрическое моделирование
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, StdCtrls, Spin, ExtCtrls;
type
TForm1 = class(TForm)
SpinEdit2: TSpinEdit;
SpinEdit3: TSpinEdit;
SpinEdit4: TSpinEdit;
SpinEdit5: TSpinEdit;
SpeedButton1: TSpeedButton;
SpinEdit1: TSpinEdit;
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
k3,k2,max,sum,i,xx:integer;
s,ss:array[1..5]of integer;
pr:extended;
r1,r2,r3,r4,r5:trect;
implementation
{$R *.DFM}
procedure p1а ;
begin
form1.refresh;
form1.canvas.pen.width:=2;
form1.canvas.pen.color:=clblack;
for i:=0 to 627 do
begin
if i=ss[1] thenа form1.canvas.pen.color:=clred;
if i=(ss[1]+ss[2]) thenа form1.canvas.pen.color:=clblue;
if i=(ss[1]+ss[2]+ss[3]) thenа form1.canvas.pen.color:=clgreen;
if i=(ss[1]+ss[2]+ss[3]+ss[4]) thenа form1.canvas.pen.color:=clwhite;
form1.canvas.moveto(75,75);
form1.canvas.lineto(trunc(75+60*cos(i/100)),trunc(75+60*sin(i/100)));
end;
{-------- линейный график --------------}
form1.canvas.pen.width:=1;
form1.canvas.moveto(200,20);
form1.canvas.lineto(200,150);
form1.canvas.lineto(400,150);
form1.canvas.moveto(200,150);
xx:=240;
for i:=1 to 5 do
begin
form1.canvas.lineto(xx,(150-s[i]*k2));
xx:=xx+40;
end;
{--------- гистограмма ------------}
form1.canvas.pen.width:=2;
form1.canvas.moveto(48,190);
form1.canvas.lineto(48,402);
form1.canvas.lineto(402,402);
r1:=rect(50,400,120,(400-s[1]*k3));
r2:=rect(120,400,190,(400-s[2]*k3));
r3:=rect(190,400,260,(400-s[3]*k3));
r4:=rect(260,400,330,(400-s[4]*k3));
r5:=rect(330,400,400,(400-s[5]*k3));
form1.canvas.brush.color:=clblack;
form1.canvas.fillrect(r1);
form1.canvas.brush.color:=clred;
form1.canvas.fillrect(r2);
form1.canvas.brush.color:=clblue;
form1.canvas.fillrect(r3);
form1.canvas.brush.color:=clgreen;
form1.canvas.fillrect(r4);
form1.canvas.brush.color:=clwhite;
form1.canvas.fillrect(r5);
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
s[1]:=SpinEdit1.value;
s[2]:=SpinEdit2.value;
s[3]:=SpinEdit3.value;
s[4]:=SpinEdit4.value;
s[5]:=SpinEdit5.value;
sum:=0;
for i:=1 to 5 do
sum:=sum+s[i];
pr:=628/sum;
for i:=1 to 5 do
ss[i]:=trunc(s[i]*pr);
max:=0;
for i:=1 to 5 do if s[i]>=max then max:=s[i];
k2:=trunc(140/max);
k3:=trunc(200/max);
p1; { процедура которая может все }
end;
end.