Лабораторлық жұмыс № 5.

Тақырыбы: Image, Shape, Timer компоненттерін қолдану

Сабақтың мақсаты: Image, Shape, Timer компоненттерін қолдана отыра, әртүрлі қозғалыстарды жасй білуді игеру.

 

Мысал 1. Компьютер жадысында сақталған суреттерді таңдай алғызатын бағдарламаны жасаңдар.

 

 

компонент

Қасиеті

Мәні

1

Form1

Caption

Просмотр иллюстраций

2

Label1

Caption

Каталог

3

Edit1

Text

c:\windows\

4

GroupBox1

Caption

Формат

5

RadioButton1

Caption

Checked

bmp

True

6

RadioButton2

Caption

jpg

7

Image1

Name

Picture

Stretch

(Пусто)

нету

True

8

Button1

Caption

Дальше

 

Программа коды:

unit shpic_;

interface

uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  ExtCtrls, StdCtrls, Menus;

type

  TForm1 = class(TForm)

    Image1: TImage;    

    Button1: TButton;  

    Label1: TLabel;

    Edit1: TEdit;

    RadioButton1: TRadioButton; 

    RadioButton2: TRadioButton; 

    GroupBox1: TGroupBox;

    procedure Button1Click(Sender: TObject);

    procedure Edit1KeyPress(Sender: TObject; var Key: Char);

    procedure FormCreate(Sender: TObject);

    procedure RadioButton1Click(Sender: TObject);

    procedure RadioButton2Click(Sender: TObject);

   procedure FirstPicture;

    procedure NextPicture; 

    procedure ScaleImage; 

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

  iw,ih: integer;

implementation

{$R *.DFM}

uses

     jpeg;

var

  aSearchRec : TSearchRec;

  aPath: String[128];

  aFile: String[128];

  aMask: String[5];  

  n: integer = 0;

procedure TForm1.FormCreate(Sender: TObject);

begin

    Image1.AutoSize := False;

    Image1.Stretch := True;    

    iw := Image1.Width;

    ih := image1.Height;

    Button1.Enabled := False;

    FirstPicture; end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

    if Key = #13 then

        if DirectoryExists(Edit1.Text)

            then FirstPicture

            else ShowMessage('Каталог '+

            Edit1.Text +' указан неверно.');

end;

procedure TForm1.FirstPicture;

var

   r : integer;

begin

   aPath := Edit1.Text;

   if aPath[Length(aPath)] <> '\'

        then aPath := aPath + '\';

   if RadioButton1.Checked

        then aMask := '*.bmp'

        else aMask := '*.jpg';

   r := FindFirst(aPath + aMask, faAnyFile, aSearchRec);

   if r = 0 then

      begin

          aFile := aPath + aSearchRec.Name;

          Image1.Picture.LoadFromFile(aFile);

          ScaleImage;

          r := FindNext(aSearchRec);

          if r = 0 then 

             Button1.Enabled := True;

      end;

end;

Procedure TForm1.NextPicture();

var

   r : integer;

begin

   aFile := aPath + aSearchRec.Name;

   Image1.Picture.LoadFromFile(aFile);

   ScaleImage;

   r := FindNext(aSearchRec); 

 if r <> 0

      then

         Button1.Enabled := False;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

    NextPicture;

end;

Procedure Tform1.ScaleImage;

var

    pw, ph : integer;     

    scaleX, scaleY : real;

    scale : real;         

begin

            pw := Image1.Picture.Width;

      ph := Image1.Picture.Height;

      if pw > iw

          then scaleX := iw/pw 

          else scaleX := 1;

      if ph > ih

          then scaleY := ih/ph 

          else scaleY := 1;

            if  scaleX < scaleY

          then scale := scaleX

          else scale := scaleY;

      Image1.Height := Round(Image1.Picture.Height*scale);

      Image1.Width := Round(Image1.Picture.Width*scale);

end;

procedure TForm1.RadioButton1Click(Sender: TObject);

begin

    FirstPicture;

end;

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

    FirstPicture;

end; end.

 

Мысал 2: «Айдың жерді айнылуы»

 

компонент

қасиеті

Мәні

1

Timer1

Interval

55

2

Label1

Caption

Вращение Луны вокруг Земли

3

Shape1

Brush.Color

Shape

Left

Top

Height

Widht

clBlue

stCircle

240

104

121

121

4

Shape2

Brush.Color Shape

Left

Top

Height

Widht

clYellow

stCircle

400

152

41

41

 

Фрагмент кода программы:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

x:=x+0.1 ;

shape2.Left:=256+trunc(150*cos(x));

shape2.Top:=150-trunc(150*sin(x));

end;

Тапсырмалар.

 

1. Формада ек бірдей сурет орналасқан және «Өлшемін қысқарту» нүктесі. Нүктеге басқан сайын бірінші сурет жәй кішіріледі, ал екінші кішіріле отыра қиылады және осыларды қалпына келтіретін екінші батырманы қосыңыз.

2. Формада горизатальды сызықтармен сызылған жасыл түсті дөңгелек орналасқан.Уақыт белгісі бойынша ол төртбұрышқа айналып, қызыл түске ие болады..

3. Формада тікбұрыш және көлбеу сызық орналасқан. Батырманы басқан кезде сызық тікбұрыш жаққа қарай қозғалады. Сызық тікбұрышқа тиген жағдайда жоғалып, тіктөртбұрыш эллипсқа айналады.

4. Формаға кемпірқосақ үлгісінде 7 дөңгелек орналастырып, әр қайсысына өз түсін(қасиетінің мәні BrushàСо1ог)  және толтыру стилін(қасиетінің мәні BrushàStyle).  анықтаймыз. Форманы немесе орналасқан батырма арқылы басқан сайын дөңгелектер әр түрлі түске енетіндей қыламыз.

 

5. Графикалық редакторда алманың бұтағын жасаңдар. Бұтақта алманы Shape элементі арқылы толтырыңдар. Алмаға басқан сайын оның өлшемі ұлғаятындай қылыңдар.

6. Ұшып келе жатқан объекті жасаңдар және оны форма бойынша қозғалатын етіңдер, ал екі басқанда орнына қайтатын болсын ( Left қасиетін қолдаңындар).

Бақылау сұрақтары:

  1. Image компонентіне сипаттама беріңіз?
  2. Shape и Timer компоненттерінің негізгі қасиеттерің атаңыз?
  3. Brush қасиетінің көмегімен қандай қимылдарды орындауға болады?
  4. Стильді беру үшін қандай қасиетті қолданамыз?
  5. Келесі жол нені білдіреді:

shape2.Left:=256+trunc(150*cos(x));

  1. Қандай бағдарламаның коды қандай процедураға жататының қалай анықтауға болады?
  2. Келесі қасиеттер қандай амалдарды орындайды: Height және Width
  3. Иллюстрация файлы дегеніміз не?
  4. Форманы түрлі түске ендіретін қасиетті атаңыз?
  5. Уақыт белгісін қалай белгілейміз?

 

 

Алдыңғы Л.Ж.БастыКелесi Л.Ж.