Лабораторлық жұмыс № 5.
Сабақтың мақсаты: 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 қасиетін қолдаңындар).
Бақылау сұрақтары:
shape2.Left:=256+trunc(150*cos(x));