Контрольная работа по "Программирование"

Автор: Пользователь скрыл имя, 20 Декабря 2010 в 21:03, контрольная работа

Краткое описание

Простейшая программа в среде Delphi.

Цель работы: Научиться конструировать главную форму программы простейшими стандартными компонентами.

Постановка задачи:

1.Создать главную форму и присвоить ей имя, соответствующее лабораторной работе.
2.Сконструировать простейший калькулятор.
3.Написать обработчики, реализующие основные арифметические действия калькулятора.
4.Изучить структуру Unit главной формы.

Файлы: 1 файл

Записка.doc

— 640.50 Кб (Скачать)

  cd:=-10*r2;

  x3:=0;

  y3:=radius;

  b1.Canvas.Pixels[xc,yc+radius]:=col;

  b1.Canvas.Pixels[xc,yc-radius]:=col;

  b1.Canvas.Pixels[xc+radius,yc]:=col;

  b1.Canvas.Pixels[xc-radius,yc]:=col;

  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]:=col;

        b1.Canvas.Pixels[xc+y3,yc+x3]:=col;

        b1.Canvas.Pixels[xc+y3,yc-x3]:=col;

        b1.Canvas.Pixels[xc+x3,yc-y3]:=col;

        b1.Canvas.Pixels[xc-x3,yc-y3]:=col;

        b1.Canvas.Pixels[xc-y3,yc-x3]:=col;

        b1.Canvas.Pixels[xc-y3,yc+x3]:=col;

        b1.Canvas.Pixels[xc-x3,yc+y3]:=col;

  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,0,500,300),bp.Canvas,Rect(0,0,500,300));

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.pixels[x,y] then

        begin

                bp.canvas.pen.color:=Shape1.Brush.Color;

                ClrFon:=bp.canvas.pixels[x,y];

                zakrash(X,Y);

                Image1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

        end;

        end else

        if flag=6 then

        begin

            //image1.Canvas.CopyMode:=cmSrcAnd;

           if lin=0 then begin

           b2.Canvas.Brush.Color:=RGB(255,255,255);

           b2.Canvas.FillRect(Rect(0,0,500,300));

           b1.Canvas.CopyRect(Rect(0,0,500,300),b2.Canvas,Rect(0,0,500,300));

           bp.Canvas.CopyRect(Rect(0,0,500,300),Image1.Canvas,Rect(0,0,500,300));

           X1:=X; Y1:=Y; lin:=1;

           Xp:=X; Yp:=Y;

           end; 

        end

        else

        begin

                image1.Canvas.CopyMode:=cmSrcCopy;

                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,0,500,300),b1.Canvas,Rect(0,0,500,300));

          bp.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

        end;

        if (flag=8)and(lin=1) then

        begin

          Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

          bp.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

        end;

        if (flag=4)and(lin=1) then

        begin

          //krug(X1,Y1,X,Y);

          Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

          bp.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

        end;

        if (flag=5)and(lin=1) then

        begin

          ellips(X1,Y1,X,Y);

          Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

          bp.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

       end;

        if (flag=7)and(lin=1) then

        begin

          Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(X1,Y1,X,Y));

          bp.Canvas.CopyRect(Rect(0,0,500,300),Image1.Canvas,Rect(0,0,500,300));

          bp.Canvas.Pen.Color:=RGB(0,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,0,500,300),bp.Canvas,Rect(0,0,500,300)); 

        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]:=Red.Shape1.Brush.Color;

          //image1.Canvas.CopyMode:=cmSrcAnd;

          //Image1.Canvas.CopyRect(Rect(0,0,500,300),b2.Canvas,Rect(0,0,500,300));

          //image1.Canvas.CopyMode:=cmMergeCopy;

          bp.Canvas.CopyRect(Rect(0,0,500,300),image1.Canvas,Rect(0,0,500,300));

        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.Brush.Color;

          bp.Canvas.MoveTo(X1,Y1);

          bp.Canvas.LineTo(X,Y);

          X1:=X; Y1:=Y;

          Image1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

        end;

        if (flag=3)and(lin=1) then

        begin

          line(b1,X1,Y1,X,Y);

          Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

          b1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

        end;

        if (flag=4)and(lin=1) then

        begin

          b1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

          krug(X1,Y1,x,y);

Информация о работе Контрольная работа по "Программирование"