Лекциялар жинағы жинақтаған: Ражабова Аида 012-2013 оқу жылы мазмұНЫ мазмұны кіріспе 3



жүктеу 1.79 Mb.
бет20/21
Дата21.04.2019
өлшемі1.79 Mb.
түріЛекция
1   ...   13   14   15   16   17   18   19   20   21

Зертханалық жұмыс №10 «Бейнелерді құру»


  1. Келесі түрдегі Y=F(x) функциясының графигін тұрғызыңыздар:

0≤x<50 Y=0

50≤x<100 Y=x-50

100≤x<150 Y=50

150≤x<200 Y=-(x-200)

200≤x<250 Y=0

Барлық өлшемдері пиксельмен берілген.

Пішінге график тұрғызу үшін Image құрауышын орналастырыңыз. Пішінге екі батырманы орналастырыңыз «Операция» және «Закрыть». «Операция» батырмасына басқанда график тұрғызылады.


  1. Rectangle әдісін қолданып, оған қажетті координаталарды бере отырып, тіктөртбұрыш сызыңыздар.Төмендегі қасиеттерді орнатыңыз:

property Canvas.Pen – шекараларды сызу үшін.

Property Canvas.Width – сызықтың қалыңдығын анықтайды, пиксельмен беріледі.

property Canvas.Brush – оның ішкі облысын бояу үшін қолданылады.

TextOut әдісінің көмегімен келесі хабарламаны шығарыңыз: «’Прямоугольник с координатами (’+IntToStr(x1)+’;’+IntToStr(y1)+’),
(‘+IntToStr(x2)+’;’+IntToStr(y2)+’)’ ”»

  1. RadioGroup құрауышын және TCanvas класының негізгі әдістерін қолдана отырып, геометриялық фигураларды сызатын қосымша құрыңыз (шеңбер, элиипс, бұрыштары дөңгелектенген тіктөртбұрыш, бұрыштары дөңгелектенген квадрат, квадрат және т.б.).

  2. Алдыңғы тапсырманың бағдарламасын өзгертіңіз, геометриялық фигураны салу үшін Additional парағының Shape құрауышын қолданыңыз.

property Shape – геометриялық фигураның түрін анықтайды.

Samples парағының ColorGrid құрауышын қолдана отырып, геометриялық фигураның түрін өзгертіңіз.

Shape1.Brush.Color:=
ColorGrid1.ForeGroundColor;


  1. Пішіннің канвасында сурет салуға мысал:

Инспектор объектісінің Events парағынан пішін үшін келесі оқиғаларды табыңыздар: OnMouseDown, OnMouseMove, OnMouseUp. Бұл оқиғалар пішінге тышқанмен әсер еткенде қолданылады – тышқанды басу, тышқанның қозғалысы, сәйкесінше тышқанның батырмасын босату.

Келесі оқиғаларға реакцияны өңдейтін процедурураларды жазыңыздар:



procedure TForm1.Form1MouseDown(…)

begin

isdown:=true;

form1.canvas.moveto(x,y);

end;

procedure Tform1.Form1MouseMove(…);

begin

if isdown then Form1.Canvas.LineTo(X,Y);



end;

procedure Tform1.Form1MouseUp(…);

begin

isdown:=false;



end;

Осы бағдарламаны іске қосыңыз, сонда сіз пішіннің терезесінде тышқанның көмегімен сурет сала аласыз.



  1. Image немесе PaintBox құрауыштарын қолдана отырып, көпбұрыштардың интерактивті салынуын көрсетіңіз (сызықтың тізбектей салынуын қолмен жүргізіңіздер).

  2. Pixels қасиетін қолдана отырып функциясының графигін шығаратын бағдарламаны құрыңыз және талдаңыз. Графикті тұрғызу үшін барлық мүмкін аймақтар қолданылады, сонымен қатар бағдарламаның орындалу барысында терезенің өлшемі өзгеретін болса, онда график нақты өлшемді ескере отырып, қайтадан шығады.

property Pixels – Canvas обектісінің пиксельінің екі өлшемді массиві. Мысалы,

Form1.Canvas.Pixels[10,10]:=clRed

инструкциясы пішіннің бетіндегі нүктені қызыл түске бояйды.

event OnPaint пішін қандай да бір себепке байланысты қайта бояуды талап еткенде өрбиді.

event OnResize пішіннің өлшемі әрбір кез өзгергенде өрбиді.

Pixels массивінің өлшемі графикалық беттің өлшемімен анықталады. Пішіннің графикалық бетінің өлшемі ClientWidth және ClientHeight қасиеттерінің мәндері арқылы анықталады, ал Image құрауышының графикалық бетінің өлшемі Width және Height қасиеттерінің мәні арқылы анықталады. Пішіннің жұмыс аймағының сол жақ жоғарғы бұрышына Pixels[0,0] элементі сәйкес келеді, ал оң жақ төменгі бұрышына - Pixels[ClientWidth-1,ClientHeight-1]. Графикті шығаруға арналған пішіннің аймағын толығымен алатындай масштабты қалай есептеуге болады?

Мысалы, қандай да бір функциясы нөлден 1000 – ға дейінгі мәндерді қабылдаса және оның графигін шығару үшін биіктігі 250 пиксель болатын аймақ қолданылатын болса, онда у осінің масштабы келесі формула бойынша орындалады: . Сол себепті мәніне облыстың кординатасы , болатын нүкте сай келеді, ал мәніне кординатасы () болатын мән сәйкес келеді (ең үлкен бүтінге дейін дөңгелектенеді).

unit Grfunc_1;

interface

uses

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



type

TForm1 = class(TForm)



procedure FormPaint(Sender: TObject);

procedure FormResize(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;



Implementation

{$R *.DFM}

procedure Gr0fFunc; {Функцияның графигін тұрғызу}

var

x1,x2:real; // функция аргументінің өзгеру шекарасы

y1,y2:real; // функция мәнінің өзгеру шекарасы

x:real; //функция аргументі

y:real; // х нүктесіндегі функцияның мәні

dx:real; // аргументтің ауысуы

l,b:integer; // графикті шығару аймағының сол жақ төменгі бұрышы

w,h:integer; // графикті шығару аймағының биіктігі мен ені

mx,my:real; // X және Y осьтері бойынша координаталар

x0,y0:integer; // нүкте - координата басы



{Графикті тұрғызатын функция}

function f(x:real):real;

begin

f:=2*sin(x)*exp(x/5);



end;

begin

// Графикті шығару аймағы

l:=10; // Хсол жақ жоғарғы бұрыштың координатасы

b:=Form1.ClientHeight-20; // Y – сол жақ жоғарғы бұрыштың координатасы

h:=Form1.ClientHeight-40; // биіктігі

w:=Form1.ClientWidth-40; // ені

x1:=0; //аргумент диапазонының төменгі шекарасы

x2:=25; //аргумент диапазонының төменгі шекарасы

dx:=0.01; // аргумент қадамы



{[x1,x2] бөлігіндегі функцияның максимальды және минимальды мәндерін табайық }

y1:=f(x1); // минимум

y2:=f(x1); // максимум

x:=x1;


repeat

y:=f(x);


if ythen y1:=y;

if y>y2 then y2:=y;

x:=x+dx;


until (x>=x2);

my:=h/abs(y2-y1);



// Y осі бойынша масштаб

mx:=w/abs(x2-x1);



// X осі бойынша масштаб

{остер}

Gr0fFunc процедурасы арқылы тұрғызылған график

x0:=1;


y0:=b-abs(Round(y1*my));

with form1.Canvas do

begin

// оси

MoveTo(l,b); LineTo(l,b-h);

MoveTo(x0,y0); LineTo(x0+w,y0);

TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));

TextOut(l+5,b,FloatToStrF(y1,ffGeneral,6,3));

// построение графика

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

Gr0fFunc;



end;

procedure TForm1.FormResize(Sender: TObject);

begin

// очистить форму

with form1 do

Canvas.FillRect(Rect(0,0,ClientWidth,ClientHeight));

Gr0fFunc;

end;

end.


  1. 7 тапсырманың бағдарламасына басқа функцияның графигі тұрғызылатындай өзгеріс енгізіңіздер. Бағдарламаны барлық диапазонда тек оң немесе тек теріс мәндер қабылдайтын функцияның графигін тұрғызатындай етіп өзгертіңіздер.

  2. №1 тапсырмасындағы қосымша сияқты синус функциясының графигін тұрғызатын қосымша құрыңыздар.

  3. Бағдарлама терезесінің шекарасымен сол жақтан оң жағына қарай бағытта жылжитын шеңбердің қозғалысын көрсететін бағдарлама құрыңыздар (TCanvas класының әдістерін қолданыңыздар).

Суреттің орын ауыстыруын қамтамасыз ету өте қарапайым түрде ұйымдастырылады: ең алдымен суретті шығару керек, содан соң бірнеше уақыттан кейін оны өшіріп, қайта шығару керек, бірақ ол алдыңғы орынына қарағанда бірнеше ара қашықтықтан кейін шығады. Шеңберді қайта - қайта салуды ұйымдастыратын процедураны периодты түрде шақырып тұру үшін пішінге System парағынан Timer көрнекі емес құрауышын орналастырыңыздар.



Достарыңызбен бөлісу:
1   ...   13   14   15   16   17   18   19   20   21


©kzref.org 2017
әкімшілігінің қараңыз

    Басты бет