Animate компоненті тек қана A VI – файлдарын ұйымдастыру үшін ғана қолданылады. FileName қасиетіне дыбыс шығаратын файл атын енгізсеңіз, онда Delphi сізге қате туралы хабар береді. A VI – файлының ішіндегісін көргініз келсе, онда Windows – де керекті A VI – файлын белгілеп, қасиет командасын орындаңыз. Нәтижесінде Қасиет терезесі ашылады, осы терезеде файл туралы толық ақпарат берілген.
Media Player компоненті
System бетінде орналасқан Media Player компоненті ыидеороликтерді, дыбыстарды және дыбысы бар анимацияларды орындауға мүмкіндік береді.
Media Player
10.14-сурет. System беті
Компонентті формаға қосу нәтижесінде формада батырмалар тобы пайда болады. Бұл батырмалардың мәні төменгі кестеде келтірілген.
10.15-сурет. Media Player компоненті
-
Батырма
|
Белгілеуі
|
Жұмысы
|
Шығару
|
BtPlay
|
Видео немесе дыбысты шығару
|
Пауза
|
BtPause
|
Тоқтату
|
Стоп
|
BtStop
|
Тоқтату
|
Келесі
|
BtNext
|
Келесі кадрға көшу
|
Алдыңғы
|
BtPrev
|
Алдынғы кадрға көшу
|
Қадам
|
BtStep
|
Келесі дыбыстық файлға көшу
|
Артқа
|
BtBack
|
Өткен дыбыстық файлға көшу
|
Жазу
|
BtRecord
|
Жазу
|
Ашу/жабу
|
BtEject
|
Компьютер дисководын ашу немесе жабу
|
Media Player компонентінің қасиеттері
Қасиет
|
Анықтамасы
|
Name
|
Компонент аты
|
DeviceType
|
Тип
|
FileName
|
Видеоролик немесе дыбыстық фрагменті бар файл аты
|
AutoPen
|
Программаны жүктеген соң автоматты ашылу белгісі
|
Display
|
Видеоролик орналасқан компонентті анықтайды
|
VisibleButtons
|
Компоненттің көрінетін батырмаларын анықтайды
|
Дыбысты шығару
Дыбыстық фрагментер заты. WAV болып келген файлдарда орналасқан. Delphi-де дыбысты шығару үшін де Media Player комоненті қолданылады
Видеороликтерді және анимацияларды көру
Видеороликтерді және анимацияларды көру үшін Media Player компоненті қолданылады. Бұл процесті бақылау үшін келесімысалды қарастырайық: төмендегі суретте көрсетілгендей Pane компоненті анимацияны көрсететін экран ретінде пайдаланылады.
ТАПСЫРМА:
Тапсырма №1
Стилдердің түрлерін көрсететін программа құр.
Тапсырма №2
Жұлдызша сызатын программа құр
Тапсырма №3
10.3 Суретті шығараратын программа құрыңыз
Тапсырма №4
F (x) =2sin функциясының графигін [0:25] аралығында түрғызатын программа құрайық.
Тапсырма №5
Программа тізімдегі таңдалған файлға сәйкес дыбысты шығару керек.
10.16 сурет. Дыбыс фрагментін демонстрациялау терезесі
Тапсырма №6
Әдістемелік нұсқауда келтірілген программаны орындап, компиляциялаңыз
Тапсырманы орындауға әдістемелік нұсқаулар:
Тапсырма №1
unit Unit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
Type
TForm1= class(TForm
Procedure Form 1 Paint(Sender:TObject) ;
Private {Private declarations}
Public {Public declarations}
End;
Var
Form1: TForm1;
Implementation {$R*. dfm}
Procedure Tform1. FormPaint(Sender : TObject);
Const
bsName : array[1..8] of string =(‘bsSolid’, ‘BsCIear’, ‘bsHorisontal’,
‘bsvertical’, ‘bsFDiagonal’, ‘bsbDioganal’
‘bsCross’, ‘bsDiagCoss’);
Var
X,y:integer;
W,h:integer;
Bs:TBrushStyle;
K:integer;
i,j:integer;
begin
w:=40; h:=40; y:=20
for i:=1 to 2 do
begin
x:=10;
for j:=1 to 4 do
begin
k:=j+(i-1)*4;
case k of
1:bs:=bsSolid;
2:bs:=bsClear;
3:bs:=bsHorisontal;
4:bs:=bsVertical;
5:bs:=bsFDiagonal;
6:bs:=bsBDiagonal;
7:bs:=bs Diagonal;
8:bs:=bsCross;
9:bs:=bsDiagCross;
End;
canvas.Brush.Color:=clGreen;
Canvas.Brush.Style:=bs;
Canvas.Rectangle(x,y,x+w,y+h);
Canvas.Brush.Style:=Clear;
canvas.textOut(x,y-15,bsName[k]);
x:=x+w+30;
end;
y:=y+h+30;
end;
end;
end.
Тапсырма №2
Unit Unit1;
Interfase
Uses
Windows, Messages, SysUtils, variants, Classes6 Graphics, Controls, Forms,
Dialogs;
Type
TForm=class(Tform)
Procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift:TShiftState; X,Y:integer);
Private
{private declarations}
Publick { publick declarations}
End;
Var
Form1:Tform1;
Implementation
{$R*.dfm}
Procedure Starline(x0,y0,r:integer; Canvas:Tcanvas);
Var
P:array[1..11] of TPoint;
A:integer;
J:integer;
Begin
A:=18;
For i:=1 to 10 do
Begin
If (I mod2=0) then
Begin
P[i].x:=x0+round(r/2*cos(a*pi/180));
P[i].y:=y0+round(r*sin(a*pi/180));
End
Else begin
P[i].x:=x0+round(r*cos(a*pi/180));
P[i].y:=y0+round(r/2*sin(a*pi/180));
End;
A:=a+36;
End;
P[11].X:=p[1].X;
P[11].Y:=p[1].Y;
Canvas.Polyline(p);
End;
Procedure TForm.FormMouseDown(Sender:TObject; Button:TMouseButton
Shift:TShiftState; X6Y:integer);
Begin
If button=mbleft
Then
Form1.Canvas.Pen7Color:=clred
Else
Form1.Canvas.Pen.Color:=clgreen;
Starline(x,y,30,Form1.Canvas);
End;
End.
10.2-сурет. Жұлдызша
Тапсырма №3
Заты.Bmp, .ico болып келген графикалық файлдарды шығару үшін Additional бетіндегі Image компоненті қосылады.
Image
10.7-сурет. Additional беті.
Төмендегі кенстеде осы компоненттің қасиеттері көрсетілген.
Қасиеті
|
Анықтамасы
|
Picture
|
Компонент өрісінде бейнеленетін сурет
|
Width
Height
|
Компонент өлшемі
|
AutoSize
|
өлшемнің автоматты түрде өзгертілу ьелгісі
|
Strech
|
Компонент өлшеміне байланысты сурет өлшемін өзгерту белгісі
|
Visible
|
Компонент үстінде суреттің көріну, көрінбеу белгісі
|
Енді экранға жоғарыда келтірілген фигураларды сызып, оның жанына олардың атын жазып шығаратын программа мысалын жазайық. Ол үшін формаға Image1 және Button компоненттерін орналастырамыз. Программа мәтіні төмендегідей:
Unit rr2;
Interface
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphcs, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
Type
Tform1=class(TForm)
Image:TImage;
Button:TButton;
Procedure ButtonClick(Sender:TObject);
Private {Private declarations}
Public {Public declarations}
End; var
Form1:TForm1;
Implementation
{$R*.dfm}
Procedure Tform1.Button1Click(sender:TObject);
Begin
With Image1.Canvas do
Begin
Font.Sryle:=[fsBold];
Pen.Color:=clred;
Arc(10,10,90,90,90,50,10,50);
TextOut(40,60,’Arc’);
Pen.color:=clGreen;
Brush.style:=bscroos;
Chord(110,10,190,90,190,50,110,50);
Textout(135,60,’Chord’);
Pen.Color:=clred;
Brush.Color:=clBlue;
Brush.Style:=bsclear;
Ellipse(230,60,’Ellipse’);
Pie(310,10,390,90,390,30,310,30);
Textout(340,60,’Pie’);
Polygon([Point(30,150),Point(40,130), Point(50,140), Point(60,110)
Point(70,150)]);
Polyline([Point(130,150),Point(140,130), Point(150,140), Point(160,110)
Point(170,150)]);
Textout(140,170,’polyLine’);
Rectangle(230,120,280,160);
Textout(230,170,’Rectangle’);
Roundrect(330,120,380,160,20,20);
TextOut(325,170,’Roundrect’);
End;
End;
End.
Программанның орындалу нәтижесі 10.8- суретте келтірілген.
Форманы дайындау кезінде сурет Picture қасиеті арқылы жүктеледі. Олүшін Objecr Inspecror қосымшасында Picture қасиетін таңдау керек. Содан кейін пайда болған Picture Editor терезеде Load батырмасы арқылы суретті тандап, OK батырмасын басу керек.
Оның өлшемін Strech қасиеті арқылы өзгертуге болады.
10.8-сурет. Фигураларды бейнелеу терезесі
10.9-сурет. Picture Editor терезесі
Тапсырма №4
Мұнда негізгі жұмысты graficfun процедурасы орындайды. Алдымен [x1,x2] аралығындағы функцияның ең үлкен (y2)және ен кіші (y1) мәндері есептеледі. Grarficfin процедурасын шығару OnPainr оқиға өндеушісінің TFormI. Form Paint процедурасын шақыру арқылы орындалады. Ол үшін FormI – l3 екпінді жасап, оқиғалар бетінен On Paint оқиғасын тышқанмен жылдам екі рет белгілеу жеткілікті. Ал, форманың өлшемі өзгергеннен кейін графикті сызу үшін TFormI. FormResize процедурасы пайдаланылады. Ол оқиғалар бетінен OnResize оқиға өрісін тышқанмен жылдам екі рет белгілеу арқылы алынады. Программа мәтіні төмендегіней.
unit Unit1;
interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
procedure FormPaint (Sender: TObject);
procedure Form Resize (Sender: TObject);
private {Private declarations}
public {Public declarations}
end;
var
Form 1: TForm1; implementation {$R * .dfm}
procedure graficfun;
var x1, x2:real; y1, y2:real; x,dx.y:real;
1,b:integer; w,h:integer; mx,my:real; x0y0:integer;
function f (x:real):real;
begin f:=2*sin(x) *exp(x/5); end;
begin
1:=10; b:=Form1.ClientHeight-20; h:=Form1.ClientHeight-40;
w:=Form1. ClientHeight-40;
x1:=0; x2:=25; dx:=0.01; y1:=f(x1); y2:=f(x2); x:=x1; y0:=60;
repeat
y:=f(x); if yy2 then y2:y;
x:=x+dx; until (x>=x2);
my:=h/abs(y2-y1);
mx:=w/abs(x2-x1);
x0:=1; y:=b-abs(round(y1*my));
with form1.canvas do
begin
MoveTo(1,b); LineTo(1,b-h);
MoveTo(x0,y0); LineTo(x0+w,y0);
x:=x1;
repeat
y:=f(x);
form1.canvas.Pixels[x0+round(x*mx),y0-round(y*my)]:=clred
x:=x+dx;
until(x>=x2);
end;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
graficfun;
end;
procedure TForm1.FormResize (Sender: TObject);
begin
with form1 do
Canvas.FillRect (Rect (0,0, ClientWidth, ClientHeight));
End;end.
Программаның орындалу нәтижесі 10.10 - суретте келтірілген.
10.10-сурет. F(x)=2sinx*ex/5функциясының графигі
Тапсырма №5
unit media1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MPlayer;
type
TForm1 = class(TForm)
ListBox1: TListBox;
MediaPlayer1: TMediaPlayer;
Label1: TLabel;
Label2: TLabel;
procedure FormActivate(Sender: TObject);
procedure ListBox1(Sender: TObject);
procedure MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
var DoDefault: Boolean);
procedure Label1Create(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
soundpatch='C:\Office2000\Windows\Media\';
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject);
var SearchRec:TSearchRec;
begin
form1.MediaPlayer1.Play;
if findfirst(soundpatch+'*.wav',faanyfile,searchrec)=0
then
begin
Form1.ListBox1.Items.Add(searchRec.Name);
while (FindNext(SearchRec)=0)do
Form1.ListBox1.Items.Add(searchRec.Name);
end;
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
Label3.Caption:=ListBox1.Items[listBox1.ItemIndex];
end;
procedure
TForm1.MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
var DoDefault: Boolean);
begin
if (Button=btPlay) and (Label3.Caption<>")then
begin
with MediaPlayer do
begin
FileName:=SoundPatch+Label3.Caption;
Open;
end;
end;
end;
end.
Тапсырма №6
10.17 сурет. Дыбысты анимацияны сүйемелдеу терезесі.
7 мысал.
unit Win_medPlay;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MPlayer, ExtCtrls;
type
TForm2 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
MediaPlayer1: TMediaPlayer;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
MediaPlayer1.Play;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
mediaPlayer1.DisplayRect:=Rect(0,0,60,60);
end;
7 мысал. Форманың бетінде сағаттық, минуттық және секундтық стрелкасымен жүріп тұрған сағатты бейнелейтін программаны құрайық .
unit сlock;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm3 = class(TForm)
PaintBox1: TPaintBox;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Vector(x0,y0,a,l:integer)
procedure DrawClock;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
DateUtils;//SecondOf,
//MinuteOf және HourOf кіру үшін
const
R=75; // сағат циферблатының радиусы бұрышы
var
x0,y0:integer; //циферблат центрі
ahr,amin,asec:integer; //бағыттауыш стрелкалар бағыты
//форманы инициализациялау
procedure TForm1. FormCreate(Sender: TObject);
var
t: DateTime;
begin
//циферблаттың өлшеміне сәйкес
//форманың өлшемін береміз
ClientHeight:=(R+10)*2;
ClientWidth:= (R+10)*2;
x0:=R+10;
y0:=R+10;
t:Now();
//бағыттауыш стрелкалар бағыты
ahr:=90-HourOf(t)*30-(MinuteOf(Today)div 12)*6;
amin:=90-MinuteOf(t)*6;
asec:=90- SecondOf(Today)*6;
Timer1.Interval:=1000; // 1сек таймер сигналының периоды
Timer1.Enabled:=True; //таймерді қосу
End;
//(x0,y0)нүктесінен берілген ұзындықпен вектор сызылады
procedure Tform1.Vector(x0,y0:integer;a,l:integer);
// x0,y0-вектродың басы
// a-X осі мен вектор арасындағы бұрыш
// l-вектордың ұзыңдығы
const
GRAD=0.0174532; //бұрышты градустан радионға есептеу коэффициенті
var
x,y:integer; //вектордың соңғы нүктесінің координатасы
begin
Canvas.MoveTo(x0,y0);
x:=Round(x0+1*cos(a*GRAD));
y:=Round(y0-1*sin(a*GRAD));
Canvas.LineTo(x,y);
end; // бағыттауыш стрелкалар procedure DrawClock;
var
t:TDateTime;
begin
//сызады секундтық және минуттық стрелкалар қадамы 6 градус
//сағат-30
//стрелкалар бейнесін өшіру
Canvas.Pen.Color:=clBtnFace;
Canvas.Pen.Width:=3;
//сағаттық
Vector(x0,y0,ahr,R-20);
//минуттық
Vector(x0,y0,amin,R-20);
//секундтық
Vector(x0,y0,asec,R-7);
T:=Now();
//стрелкалардың жаңа орналасу жағдайы
ahr:=90-HourOf(t)*30-(MinuteOf(Today)div 12)*6;
amin:=90-MinuteOf(t)*6;
asec:=90- SecondOf(t)*6;
//стрелкалар салу
//сағаттық стрелка
Canvas.Pen.Width:=3;
Canvas.Pen.Color:=clBlack;
Vector(x0,y0,ahr,R-20);
//минуттық стрелка
Canvas.Pen.Width:=2;
Canvas.Pen.Color:=clBlack;
Vector(x0,y0,amin,R-15);
//секундтық стрелка
Canvas.Pen.Width:=1;
Canvas.Pen.Color:=clYellow;
Vector(x0,y0,asec,R-7);
end;
//циферблат пен бастапқы стрелкаларды салу procedure Tform1.FormPaint(Sender: TObject);
var
x,y:integer; //циферблаттағы маркер координаты
a:integer; //OX осі мен (x0,y0),(x,y) арасындағы бұрыш
pc:TColor; //қарындаш түсі
pw:integer; //қарындаш ені
begin
pc:= Canvas.Pen.Color
pw:= Canvas.Pen.Width;
Canvas.Pen.Width:=1;
Canvas.Pen.Color:=clBlack;
a:=0; //сағат стрелкасына қарсы
//сағат 3-тен бастап белгі қоямыз
//циферблат
While a<360 do
begin
x:=x0+Round(R*cos(a*2*pi/360));
y:=x0-Round(R*sin(a*2*pi/360));
Form1.Canvas.MoveTo(x,y);
if (a mod 30) do
then Canvas.Ellipse(x-2,y-2,x+3,y+3)
else Canvas.Ellipse(x-1,y-1,x+1,y+1)
a:=a+6; //1 минут - 6 градус
end;
//қарындаш, қыл қаламды қалпына келтіру
Canvas.Pen.Width:=pw;
Canvas.Pen.Color:=pc;
DrawClock;
end;
//сағат стрелкасының ағымдағы жағдайын салу
procedure Tform1.Timer1Timer(Sender: TObject);
begin
DrawClock;
end;
end.
Ұсынылатын әдебиеттер: [1-9]
Бекіту сұрақтары:
-
Графикалық құралдары пайдалануға арналған кластарды атаңдар.
-
Шрифт қандай кластың көмегімен құралады?
-
Сызық қандай кластың көмегімен құралады?
-
Толтыру қандай кластың көмегімен құралады?
-
Кенеп қандай кластың көмегімен құралады?
-
Қаламның қандай қасиеттері бар?
-
Қылқаламның қызметі не?
-
Графикалық бетке мәтін қалай шығарылады?
-
Графикалық примитивтерді салудың қандай әдістері бар?
-
Image компонентінің қызметі қандай?
-
Сурет шығару үшін қандай компонент пайдаланылады?
-
Мультипликация дегеніміз не?
-
Мультимедиялық программалар қандай компоненттің көмегімен құралады?
-
Видеороликтер, дыбысы бар анимациялар қандай компоненттердің көмегімен орындалады?
-
Media Player компонентінде қандай қызметтер қамтылған?
-
Дыбыс шығару үшін қандай компонент қолданылады?
Пайдаланылған әдебиеттер
-
Давыдова Е.В., Скородумов И.А., Балаханов В.А. Создание базовых элементов интерфейса Windows программы в среде Delphi. Информатика и образование. № 4,5,6. 2002.
-
Дудина И.П. Построение графиков функций в Delphi. Информатика и образование. №6, 2003, стр.27 -31.
-
Кнопка Р. Создание оригинальных компонентов в среде Delphi. Пер.с англ.Рей.К.: НИПФ «Диа Софт ЛТД», 1996-152 с.
-
Культин Н. Delphi 3. Программирование на Object Pascal. Санкт-Петербург, 1998. -304 с.
-
Орлик С.В. Секреты Delphi на примерах. М.: Бином, 1996-136 с.
-
В.Фаронов. Объектно-риентированная среда Delphi. Версия 6. Учебное пособие. «Русская редакция», 2002.
-
М.Фленов. Библия Delphi. Санкт-Петербург «БХВ-Петербург», 2004-880 с.: ил.
-
Халықова К.З., Бостанов Б., Тұрғанбаев А. Объектілі бағдарланған программалау жүйелерінің негіздері. Оқу құралы. Абай ат. ҚазҰПУ. Алматы, 2005-301 б.
-
Халықова К.З. Паскаль тілінде программалау. Оқу құралы. Абай ат. АлМУ. Алматы, 2002-210 б.
ОСӨЖ ОРЫНДАУ БОЙЫНША НҰСҚАУЛАР
Студенттің оқытушымен бірге орындайтын өздік жұмысы №1
Тақырыбы: Консольдық қолданбалар
Мақсаты: Консольдық программа құру
Тапсырма
Берілген өрнекті есептеу үшін консольдық қосымша құрыңыз. (Таратпа материал, өз нұсқаңыз бойынша(журналдағы реттік номерге сәйкес))
360>
Достарыңызбен бөлісу: |