Автор: Пользователь скрыл имя, 20 Декабря 2010 в 21:03, контрольная работа
Простейшая программа в среде Delphi.
Цель работы: Научиться конструировать главную форму программы простейшими стандартными компонентами.
Постановка задачи:
1.Создать главную форму и присвоить ей имя, соответствующее лабораторной работе.
2.Сконструировать простейший калькулятор.
3.Написать обработчики, реализующие основные арифметические действия калькулятора.
4.Изучить структуру Unit главной формы.
cd:=-10*r2;
x3:=0;
y3:=radius;
b1.Canvas.Pixels[xc,yc+radius]
b1.Canvas.Pixels[xc,yc-radius]
b1.Canvas.Pixels[xc+radius,yc]
b1.Canvas.Pixels[xc-radius,yc]
for i:=1 to dxt do
begin
x3:=x3+1;
if (e>=0) then e:=e+t+ca
else begin
y3:=y3-1;
e:=e+t-s+cd;
s:=s+dst;
end;
t:=t-dst;
b1.Canvas.Pixels[xc+x3,yc+y3]:
b1.Canvas.Pixels[xc+y3,yc+x3]:
b1.Canvas.Pixels[xc+y3,yc-x3]:
b1.Canvas.Pixels[xc+x3,yc-y3]:
b1.Canvas.Pixels[xc-x3,yc-y3]:
b1.Canvas.Pixels[xc-y3,yc-x3]:
b1.Canvas.Pixels[xc-y3,yc+x3]:
b1.Canvas.Pixels[xc-x3,yc+y3]:
end;
end;
procedure TRed.zakrash(x,y: integer);
var xl,xr: integer;
clr1: TColor;
begin
xl:=x;
xr:=x;
repeat
xl:=xl-1;
clr1:=bp.canvas.pixels[xl,y];
until (clr1<>ClrFon);
repeat
xr:=xr+1;
clr1:=bp.canvas.pixels[xr,y];
until (clr1<>ClrFon);
inc(xl);
dec(xr);
bp.canvas.MoveTo(xl,y);
bp.canvas.LineTo(xr+1,y);
x:=xl;
while x<=xr do
begin
clr1:=bp.canvas.pixels[x,y+1];
if (clr1=ClrFon) then
zakrash(x,y+1);
clr1:=bp.canvas.pixels[x,y-1];
if (clr1=ClrFon) then
zakrash(x,y-1);
inc(x);
end;
end;
procedure TRed.FormCreate(Sender: TObject);
begin
bp := TBitmap.Create;
b1 := TBitmap.Create;
b2 := TBitmap.Create;
bp.Width:=500;
bp.Height:=300;
b1.Width:=500;
b1.Height:=300;
b2.Width:=500;
b2.Height:=300;
lin:=0; flag:=0;
bp.Canvas.MoveTo(0,0);
bp.Canvas.LineTo(0,299);
bp.Canvas.LineTo(499,299);
bp.Canvas.LineTo(499,0);
bp.Canvas.LineTo(0,0);
Image1.Canvas.CopyRect(Rect(0,
end;
procedure TRed.line(bx:TBitMap;x1, y1, x2, y2:integer);
type s= -1..1;
var
s1,s2: s;
dy,dx,x,y: integer;
f,i,e,wr: integer;
function sign(d: integer): s;
begin
if d<0 then sign:=-1
else if d>0 then sign:=1
else sign:=0;
end;
begin
dx:=abs(x2-x1);
dy:=abs(y2-y1);
s1:=sign(x2-x1);
s2:=sign(y2-y1);
if dy>dx then
begin
wr:=dx;
dx:=dy;
dy:=wr;
f:=1;
end else f:=0;
e:=2*dy-dx;
for i:=1 to dx do
begin
{ x:=x1+PaintBox1.width div 2;
y:=PaintBox1.height div 2 - y1;}
bx.Canvas.Pixels[x1,y1]:=
Red.Shape1.Brush.Color;
while e>=0 do
begin
if f=1 then x1:=x1+s1
else y1:=y1+s2;
e:=e-2*dx;
end;
if f=1 then y1:=y1+s2
else x1:=x1+s1;
e:=e+2*dy;
end;
x:=x2+Image1.width div 2;
y:=Image1.height div 2 - y2;
bx.Canvas.Pixels[x1,y1]:=
Red.Shape1.Brush.Color;
end;
procedure TRed.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if flag=1 then
begin
if Shape1.Brush.Color<>bp.canvas.
begin
bp.canvas.pen.color:=Shape1.
ClrFon:=bp.canvas.pixels[x,y];
zakrash(X,Y);
Image1.Canvas.CopyRect(Rect(0,
end;
end else
if flag=6 then
begin
//image1.Canvas.CopyMode:=
if lin=0 then begin
b2.Canvas.Brush.Color:=RGB(
b2.Canvas.FillRect(Rect(0,0,
b1.Canvas.CopyRect(Rect(0,0,
bp.Canvas.CopyRect(Rect(0,0,
X1:=X; Y1:=Y; lin:=1;
Xp:=X; Yp:=Y;
end;
end
else
begin
image1.Canvas.CopyMode:=
b1.Canvas.CopyMode:=cmSrcCopy;
bp.Canvas.CopyMode:=cmSrcCopy;
lin:=1; X1:=X; Y1:=Y;
end;
end;
procedure TRed.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (flag=3)and(lin=1) then
begin
line(b1,X1,Y1,X,Y);
Image1.Canvas.CopyRect(Rect(0,
bp.Canvas.CopyRect(Rect(0,0,
end;
if (flag=8)and(lin=1) then
begin
Image1.Canvas.CopyRect(Rect(0,
bp.Canvas.CopyRect(Rect(0,0,
end;
if (flag=4)and(lin=1) then
begin
//krug(X1,Y1,X,Y);
Image1.Canvas.CopyRect(Rect(0,
bp.Canvas.CopyRect(Rect(0,0,
end;
if (flag=5)and(lin=1) then
begin
ellips(X1,Y1,X,Y);
Image1.Canvas.CopyRect(Rect(0,
bp.Canvas.CopyRect(Rect(0,0,
end;
if (flag=7)and(lin=1) then
begin
Image1.Canvas.CopyRect(Rect(0,
bp.Canvas.CopyRect(Rect(0,0,
bp.Canvas.Pen.Color:=RGB(0,0,
bp.Canvas.MoveTo(0,0);
bp.Canvas.LineTo(0,299);
bp.Canvas.LineTo(499,299);
bp.Canvas.LineTo(499,0);
bp.Canvas.LineTo(0,0);
Image1.Canvas.CopyRect(Rect(0,
end;
if (flag=6)and(lin=1) then
begin
line(b2,X1,Y1,X,Y);
line(b1,X1,Y1,X,Y);
X1:=X; Y1:=Y;
Xp1:=X; Yp1:=Y;
image1.Canvas.Pixels[x,y]:=
//image1.Canvas.CopyMode:=
//Image1.Canvas.CopyRect(Rect(
//image1.Canvas.CopyMode:=
bp.Canvas.CopyRect(Rect(0,0,
end else lin:=0;
end;
procedure TRed.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var xx,yy:integer;
begin
if (flag=2)and(lin=1) then
begin
bp.Canvas.Pen.Color:=Shape1.
bp.Canvas.MoveTo(X1,Y1);
bp.Canvas.LineTo(X,Y);
X1:=X; Y1:=Y;
Image1.Canvas.CopyRect(Rect(0,
end;
if (flag=3)and(lin=1) then
begin
line(b1,X1,Y1,X,Y);
Image1.Canvas.CopyRect(Rect(0,
b1.Canvas.CopyRect(Rect(0,0,
end;
if (flag=4)and(lin=1) then
begin
b1.Canvas.CopyRect(Rect(0,0,
krug(X1,Y1,x,y);
Информация о работе Контрольная работа по "Программирование"