Тапсырма №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 б.
360>
Достарыңызбен бөлісу: |