AMALIY MASHG’ULOT. DELPHINING GRAFIK
KOMPONENTLARI.
1. Sodda grafik
elementlarni chizish uchun metodlar
Ixtiyoriy rasm,
chizma va sxemalarni sodda grafik elementlarning (nuqta, chiziq, aylana, yoy va
x.k.) to’plamidan iborat deb qarash mumkin. Shuning uchun ekranda kerakli
tasvirni hosil qilish uchun dastur bu tasvirni tashkil qiluvchi grafik sodda
elementlarni chizishni (ekranga chiqarishni) ta’minlashi lozim.
Sodda grafik
elementlarni komponenta sirtida (forma yoki ilyustrasiyalarni chiqarish
sohasida) chizish masalasi shu komponentaning Canvas hususiyatining extiyojga
qarab, mos metodlarini qo’llash orqali hal qilinishi mumkin.
Chiziqlar. To’g’ri chiziqlarni chizish uchun LineTo metodidan
foydalaniladi. Bu metodni umumiy ko’rinishda quyidagi usulda chaqiriladi:
Komponent.Canvas.LineTo(x,u)
LineTo metodi
qalamning joriy pozisiyasidan boshlab, metodga murojaat qilinganda ko’rsatilgan
koordinatali nuqtagacha bo’lgan to’g’ri chiziqni (kesmani) yasaydi. Chiziqning
boshlang’ich nuqtasini qalamni grafik sirtning kerakli pozisiyasiga surish
usuli bilan ko’rsatish mumkin. Bu vazifani MoveTo
metodi bajaradi. Uning parametrlari ikkita bo’lib, qalamning navbatdagi
pozisiyasini ko’rsatuvchi nuqtani anglatadi. Chiziqning ko’rinishi, (rangi,
qalinligi va stili) chiziq chizilishi talab qilingan grafik sirtning Pen
hususiyatining qiymatlari bilan aniqlanadi.
Ko’pincha,
hisoblashlar natijalarini grafiklar ko’rinishida ifodalash qulay hisoblanadi.
Tushunish oson bo’lishi hamda ko’rgazmalilikni oshirish uchun grafiklarni
koordinatalar o’qi va raqamli to’r fonidan foydalangan holda yasaladi.
2-listingda forma sirtiga koordinatalar o’qi va raqamli to’rni chiqaruvchi
dasturning matni keltirilmoqda. (1-rasm)
1-rasm. Koordinata to’ri dasturining oynasi
2-listing.
Koordinata o’qlari va raqamlangan to’r
unit grid_;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
procedure FormPaint(Sender:
TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormPaint(Sender: TObject);
var
x0,y0:integer; ¤¤ koordinata o’qlarining boshlang’ich nuqtasi
dx,dy:integer; ¤¤ koordinata to’rining qadami (piksellarda)
h,w:integer; ¤¤ koordinata to’rining chiqarish sohasining balandligi va kengligi
x,y:integer;
lx,ly:real; ¤¤ to’r chiziqlarini raqamlash (X va Y bo’yicha)
dlx,dly:real; ¤¤ to’r chiziqlarinig belgilash qadami (X va Y bo’yicha)
cross:integer; ¤¤ raqamlanmagan to’r chiziqlarining hisoblagich
dcross:integer; ¤¤ raqamlanganlari orasida raqamlanmagan chiziqlarning miqdori
begin
x0 := 30; y0 :=
220; ¤¤ o’qlar (40,250) nuqtadan boshlanadi.
dx := 40; dy :=
40; ¤¤ koordinata to’rining qadami 40 piksel
dcross := 1; ¤¤ X to’rning chiziqlarini belgilash: 1 - har birini
¤¤ 2 - bittadan oralatib
¤¤ 3 - ikkitadan oralatib
dlx := 0.5; ¤¤
X o’qining belgilash qadami
dly := 1.0; ¤¤
U o’qining belgilash qadami: 1, 2, 3 va x.k.
h := 200;
w := 300;
with form1.Canvas do
begin
cross := dcross;
MoveTo(x0,y0); LineTo(x0 ,
y0-h); ¤¤ X o’qi
MoveTo(x0, y0); LineTo(x0 + w, y0); ¤¤ Y o’qi
¤¤ X o’qi bo’yicha bo’laklash, to’r va raqamlash
x := x0 + dx;
lx := dlx;
repeat
MoveTo(x,y0-3); LineTo(x,y0 + 3); ¤¤ bo’laklash
cross := cross-1;
if cross = 0 then ¤¤ raqamlash
begin
TextOut(x-8, y0 + 5, FloatToStr(lx));
cross := dcross;
end;
Pen.Style := psDot;
MoveTo(x, y0-3); LineTo(x,
y0-h); ¤¤ to’rning chiziqlari
Pen.Style := psSolid;
lx := lx + dlx;
x := x + dx;
until (x>x0 + w);
¤¤ Y o’qi bo’yicha bo’laklash, to’r va raqamlash
y := y0-dy;
ly := dly;
repeat
MoveTo(x0-3, y); LineTo(x0 + 3,y); ¤¤ bo’laklash
TextOut(x0-20, y,
FloatToStr(ly)); ¤¤ raqamlash
Pen.Style := psDot;
MoveTo(x0 + 3, y); LineTo(x0 +
w, y); ¤¤ to’rning chiziqlari
Pen.Style := psSolid;
y := y-dy;
ly := ly + dly;
until (y<y0-h);
end;
end;
end.
Keltirilgan
dasturning o’ziga hos tomoni shundaki, u to’rning qadami va raqamlash usulini
belgilashga imkon beradi. Bundan tashqari, dastur X o’qining to’rining har bir
chiziqlarini emas, balki oralatib ham raqamlay oladi. Buning sababi shuki, agar
raqamlashda qatnashadigan sonlar bir nechta raqamdan iborat bo’lsa, raqamlashda
qatnashadigan sonlarni ekranga chiqarganda ularning ayrim raqamlari
bir-birining ustiga tushib qolishi ehtimoli oldini olishdan iborat.
Siniq chiziq. Polyline metodi siniq
chiziq chizish uchun xizmat qiladi. Bu metod parametr sifatida Tpoint tipidagi
massivni qabul qiladi. Massivning har bir elementi x va y maydonli
yozuvdan iborat bo’lib, siniq chiziqning siniq nuqtasini belgilaydi. Polyline
metodi koordinatasi massivda joylashgan siniq chiziqning sinish nuqtalarini
ketma-ket kesmalar bilan birlashtiradi: birinchini ikkinchi bilan, ikkinchini
uchinchi bilan va x.k.
Polyline
metodidan yopiq konturlarni chizish uchun ham foydalanish mumkin. Buning uchun
metodning parametri sifatida ishtirok etayotgan massivning birinchi va oxirgi
elementlari bir hil bo’lishi lozim. Namuna sifatida 3-listingda berilgan
dasturni ko’raylik. Bu dastur dialog oynasi sirtida sichqoncha tugmasi
chertilgan joyda besh qirrali yulduz tasvirini (11.5-rasm) yasaydi. Yulduz
chizilgan rang sichqonchaning qaysi tugmasi chertilishiga bog’liq. Sichqoncha
tugmasini chertish (MouseDown xodisasi) uchun xodisalarni qayta ishlash
prosedurasi yulduz chizish prosedurasi StarLine ni chaqiradi va unga parametr
sifatida sichqoncha nuqtasi chertilgan nuqtaning koordinalarini uzatadi.
Yulduzni StarLine prosedurasi chizadi. U parametr sifatida yulduz markazining
koordinatalarini hamda holstni oladi. Dastlab, yulduzning uchlari va
chuqurliklarining koordinatalari hisoblanadi va bu ma’lumotlar p massivga
yoziladi. So’ngra bu massiv PolyLine metodiga parametr qilib uzatiladi. P
massiv elementlarini hisoblashda qutb koordinatalar sistemasidan foydalanamiz.
Buning uchun burchaklar radianlarda ifodalangan bo’lishi kerak.
3-listing. Yopiq
kontur (yulduz) chizish
unit Stars_;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
procedure FormMouseDown(Sender:
TObject; Button: TMouseButton;
Shift: TShiftState; X, Y:
Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure StarLine(x0,y0,r: integer; Canvas: TCanvas);
¤¤ x0,y0 – Yulduz markazining
koordinatasi
¤¤ r – yulduzning radiusi
var
p : array[1..17] of TPoint; ¤¤ uchlar chuqurliklar massivi
a: real; ¤¤ Uchlar uchun burchak
i: integer;
begin
a := 0; ¤¤ o’ng uchdan yasashni boshlash uchun
for i := 1 to 16 do
begin
if (i mod 2 = 0) then
begin ¤¤ chuqurlik koordinatalari
p[i].x := x0 + Round(r ¤ 2*cos(a*2*pi ¤
360));
p[i].y := y0-Round(r ¤ 2*sin(a*2*pi ¤ 360));
end
else
begin ¤¤ uchning koordinatalari
p[i].x := x0 + Round(r*cos(a*2*pi ¤ 360));
p[i].y := y0 - Round(r*sin(a*2*pi ¤ 360));
end;
a := a + 22.5;
end;
p[17].X := p[1].X; ¤¤ Yulduz konturini yopish uchun
p[17].Y := p[1].Y;
Canvas.Polyline(p); ¤¤ yulduzni chizish
end;
¤¤ sichqoncha tugmalarini chertilishi
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft ¤¤ chap tugma chertilganmi ?
then Form1.Canvas.Pen.Color := clBlack
else Form1.Canvas.Pen.Color := clRed;
StarLine(x, y, 30,Form1.Canvas);
end;
end.
Eslatma: P massivning o’lchami uchlar va chuqurliklar sonidan bittaga ko’p hamda
massivning birinchi va oxirgi elementlari ustma-ust tushadi.
2-rasm. Yulduz
Aylana va ellips. Ellips yoki aylana
tasvirini hosil qilish uchun Ellipse metodidan foydalaniladi.
Ellips yoki aylana chizish bu metodning parametrlariga bog’liq. Metodni ishga
tushirishning umumiy ko’rinishi quyidagicha:
Ob’ekt.Canvas.Ellipse(x1,y1, x2,u2]
Bu yerda ob’ekt — sirtida rasm chizish
talab qilingan ob’ektning (komponentaning) nomi; x1, y1, x2, u2 — aylana yoki ellipsga tashqi chizilgan
to’g’ri to’rtburchakning koordinatalari. Demak, agar to’g’ri to’rtburchak
kvadratdan iborat bo’lsa aylana, aks holda ellips chiziladi. (11.6-rasm).
Ellips
chiziqlarining rangi, qalinligi va stili Pen hususiyatining qiymatlari bilan
aniqlanadi, ellipsning ichki rangi va fon berish stili rasm chiziladigan
sirtning (canvas ning) Brush hususiyati qiymatlari bilan belgilanadi.
3-rasm. Chiziladigan figura Ellipse metodining parametrlariga bog’liq
Yoy. Yoylarni Arc metodi bilan yasash mumkin. Bu metodni
umumiy ko’rinishda quyidagicha yozish mumkin:
Ob’ekt.Canvas.Arc(x1,y1,x2,u2,x3,u3,x4,u4)
Bu yerda x1, y1, x2, u2 — chizilayotgan
yoyning asosi bo’lgan ellipsning (aylananing) parametrlari; x3, u3 — yoyning boshlanish
nuqtasini ko’rsatuvchi parametrlar; x4,
u4 —yoyning tugash nuqtasini belgilaydigan parametrlar.
Boshlang’ich
(oxirgi) nuqta – bu ellips chegarasining ellips markazidan (x3, y3) hamda (x4,
y4) koordinatali nuqtalarga o’tkazilgan to’g’ri chiziqlar orasida yotgan qismi.
Yoylar soat millariga teskari yo’nalishda yasaladi. (4-rasm).
Yoyning rangi,
qalinligi va chiziqlarining stilini rasm chizilayotgan (canvas) sirtning Pen
hususiyati qiymatlari bilan ko’rsatiladi.
4-rasm. Yoy ellips (aylana) ning ma’lum bir qismidan iborat.
To’g’ri
to’rtburchak. To’g’ri to’rtburchaklar Rectangle
metodi bilan chiziladi. Bu metodning umumiy ko’rinishi quyidagicha:
Ob’ekt.Canvas.Rectangle(x1,
y1,x2, y2)
Bu yerda Ob’ekt — sirtida rasm
chiziladigan ob’ekt (komponent) ning nomi; x1,
y1 va x2, u2 —
to’g’ri to’rtburchakning chap yuqori va o’ng quyi burchaklarning
koordinatalari.
RoundRec metodi uchlari
yoysimon bo’lgan to’g’ri to’rtburchak yasash uchun foydalaniladi. Bu metodni
umumiy ko’rinishda
Ob’ekt.Canvas.RoundRec(x1,y1,x2,
u2, x3, u3)
tarzida ishga
tushiriladi. Bu yerda x1, y1, x2, u2
– yoysimon uchli to’g’ri to’rtburchakka tashqi chizilgan to’g’ri
to’rtburchakning koordinatalari; x3,
u3 — chorak qismi to’g’ri
to’rtburchak uchi sifatida chiziladigan ellipsning o’lchamlari (5-rasm).
5-rasm. RoundRec metodi uchlari yoysimon to’g’ri to’rtburchak chizadi
To’g’ri
to’rtburchak chiziqlarining rangi, qalinligi va stili Pen hususiyatining
qiymatlari bilan aniqlanadi. To’g’ri to’rtburchakning ichki rangi va fon berish
stili rasm chiziladigan sirtning (canvas ning) Brush hususiyati qiymatlari
bilan belgilanadi.
To’g’ri
to’rtburchak yasash uchun yana ikkita metod mavjud. Bu metodlar qalam o’rniga
mo’yqalam bilan chizadi. FillRect
metodi bo’yalgan to’g’ri to’rtburchak, FrameRect
metodi esa faqat to’g’ri to’rtburchak konturini chizish uchun foydalaniladi. Bu
metodlarning har ikkisida faqat bitta parametr - TRect tipidagi struktura
qatnashadi. TRect strukturasining maydonlari to’g’ri to’rtburchakli sohaning
koordinatalarini saqlaydi, ular Rect funksiyasi yordamida aniqlanishi mumkin.
Ko’pburchak. Polygon metodi
ko’pburchak chizish uchun xizmat qiladi. Bu metodning parametri Tpoint tipdagi
massivdan iborat. Bu masivning har bir elementi yozuv bo’lib, ikkita maydon x va u larni o’z ichiga oladi. Bu yozuv-nuqta ko’pburchakning
bitta uchini ifodalaydi. Polygon metodi koordinatalari massivda ko’rsatilgan
nuqtalarni ketma-ket kesmalar bilan birlashtiradi: birinchisini ikkinchi bilan,
ikkinchisini uchinchisi bilan va x.k. So’ngra oxirgi nuqta va birinchi nuqtalar
tutashtiriladi.
Ko’pburchak
chiziqlarining rangi, qalinligi va stili Pen hususiyatining qiymatlari bilan
aniqlanadi, ko’pburchakning ichki rangi va fon berish stili rasm chiziladigan
sirtning (canvas ning) Brush hususiyati qiymatlari bilan belgilanadi, soha
so’yqalamning joriy rangi va stilida bo’yaladi. Quyidagi prosedurada polygon
metodi bilan uchburchak yasaladi.
procedure TForm1.Button2Click(Sender:
TObject);
var
pol: array[1..3]
of TPoint; ¤¤ Uchburchak
uchlarining koordinatalari
begin
pol[1].x := 10; pol[1].y := 50;
pol[2].x := 40; pol[2].y := 10;
pol[3].x := 70; pol[3].u := 50;
Form1.Canvas.Polygon(pol);
end;
Sektor. Sektorlarni Pie metodi yordamida chizish
mumkin. Bu metodni umumiy ko’rinishda quyidagi bo’yruq bilan chaqiriladi:
Ob’ekt.
Canvas.Pie(x1,y1,x2,y2,x3,u3,x4,u4)
Bu yerda x1, y1, x2, u2 — sektorning
asosi bo’lgan ellipsni (aylanani) aniqlaydigan parametrlar; x3, u3, x4, u4 - sektorning
chegarasi bo’lgan to’g’ri chiziqlarning oxirgi nuqtalarining koordinatalari.
To’g’ri
chiziqlarning boshlang’ich nuqtalari ellips (aylana) markazi bilan ustma-ust
tushadi. Sektor soat millariga teskari yo’nalishda kesib olinadi:
koordinatalari (xZ, u3) bo’lgan nuqtadan boshlanib, (x4, u4) koordinatali
nuqtada tugaydi. (6-rasm).
6-rasm. Pie metodining
parametrlariga sektorning bog’liqligi
Nuqta. Dastur grafik chizadigan sirtga Canvas ob’ekti mos keladi.
TColor tipidagi ikki o’lchovli massivdan iborat bo’lgan Pixels hususiyati grafik sirtning har bir nuqtasining rangi
haqidagi ma’lumotni saqlaydi. Pixels hususiyatidan foydalanib, grafik sirtning
ixtiyoriy nuqtasiga talab qilingan rangni berish mumkin. Masalan,
Form1.Canvas.Pixels[10,10]
:= clRed;
buyrug’i forma
sirtidagi (10, 10) koordinatali nuqtaga qizil rang beradi.
Pixels
massivining o’lchamlari grafik sirtning o’lchamlari bilan belgilanadi.
Formaning grafik sirtining (klientlar sohasi deb ham ataladi ishchi sohaning)
o’lchamlari Clientwidth va ClientHeight hususiyatlarining qiymatlari bilan
aniqlanadi, Image komponentasining o’lchamlari esa Width va Height
hususiyatlarining qiymatlari bilan belgilanadi. Formaning ishi sohasining chap
yuqori burchagiga pixels[0,0], o’ng quyi burchakka esa
-Pixels[Clientwidth-1,ClientHeight-1] elementlari mos keladi.
Pixels hususiyatidan grafiklar yasashda foydalaniladi. Odatda grafiklar berilgan formulalar bo’yicha hisoblashlar natijasi asosida quriladi. Funksiya argumentining o’zgarish diapazoni boshlang’ich ma’lumot deb qabul qilinadi. Funksiya qiymatlarining o’zgarish sohasi va diapazonini esa hisoblab topish mumkin. Olingan ma’lumotlar asosida masshtabni topish mumkin. Masshtab yasalayotgan grafik rasm chizish uchun mo’ljallangan forma yoki sirtni to’la egallashi uchun kerak bo’ladi. Masalan, agar biror f(x) funksiya 0 dan 1000 gacha bo’lgan qiymatlarni qabul qilsa, hamda uning grafigini chiqarish uchun balandligi 250 piksel bo’lgan forma sohasi olingan bo’lsa, u holda Y o’qi bo’yicha masshtabni formula bilan topiladi. Shunday qilib, f(x) = 70 nuqtaga koordinatasi Y = 233 bo’lgan nuqta mos keladi. Y ning koordinatalari formula bilan topilgan. Bu yerda h – grafik quriladigan sohaning balandligi. E’tibor bergan bo’lsangiz, ifodaning aniq qiymati 232,5 ga teng. Ammo, nuqtani Canvas sirtiga chiqarish uchun foydalaniladigan pixels hususiyatining indeksi faqat butun son bo’lishi mumkin. Shuning uchun 232,5 soni o’ziga eng yaqin butun son, ya’ni 233 orqali yaxlitlandi.
Quyida
keltirilayotgan dastur matni (.4-listing) pixels hususiyatidan foydalangan
holda funksiyasining grafigini
chizadi. Grafik chizish uchun formaning mumkin bo’lgan barcha qismi band
qilinadi. Agar foydalanuvchi dasturning ishi davomida oyna o’lchamlarini
o’zgartirsa, grafik yangi masshtab bo’yicha boshqatdan chiziladi.
4-listing. Funksiyaning grafigi
unit
grfunc_;
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}
¤¤ grafigini chizish talab qilingan funksiya
Function f(x:real):real;
begin
f :=
2*Sin(x)*exp(x ¤
5);
end;
¤¤ funksiya grafigini chizish
procedure
GrOfFunc;
var
x1,x2:real; ¤¤ funksiya argumentining o’zgarish chegarasi
y1,y2:real; ¤¤ funksiya qiymatining o’zgarish chegarasi
x:real; ¤¤ funksiyaning argumenti
y:real; ¤¤ funksiiyaning x nuqtadagi qiymati
dx:real; ¤¤ argument orttirmasi
l,b:integer; ¤¤ grafik sohaning chap quyi burchagi
w,h:integer; ¤¤ grafik sohaning kengligi va balandligi
mx,my:real; ¤¤ X va Y o’qlari bo’yicha masshtab
x0,y0:integer; ¤¤ koordinatalar boshi
begin
¤¤ grafik soha
l :=
10; ¤¤ X - chap yuqori burchakning koordinatasi
b :=
Form1.ClientHeight-20;¤
Y-chap yuqori burchak koordinatasi
h :=
Form1.ClientHeight-40; ¤¤
balandligi
w :=
Form1.Width-40; ¤¤
kengligi
x1 :=
0; ¤¤ argument diapazonining quyi chegarasi
x2 :=
25; ¤¤ argument diapazonining yuqori chegarasi
dx :=
0.01; ¤¤ argument qadami
¤¤ funksiyaning [x1, x2]kesmadagi eng katta va eng kichik qiymatlarini
topamiz
y1 :=
f(x1); ¤¤ minimum
y2 :=
f(x1); ¤¤ maksimum
x :=
x1;
repeat
y :=
f(x);
if y < y1 then y1 := y;
if y > y2 then y2 := y;
x :=
x+dx;
until (x>=x2);
¤¤ masshtabni hisoblaymiz
my :=
h ¤ abs(y2-y1); ¤¤ Y o’qi bo’yicha masshtab
mx :=
w ¤ abs(x2-x1); ¤¤ X o’qi bo’yicha masshtab
¤¤ o’qlar
x0 :=
l;
y0 :=
b-Abs(Round(y1*my));
with form1.Canvas do
begin
¤¤ o’qlar
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));
¤¤ grafikni yasash
x :=
x1;
repeat
y :=
f(x);
Pixels[x0+Round(x*mx),y0-Round(y*my)] :=
clRed;
X :=
x + dx;
until (x>=x2);
end;
end;
procedure
TForm1.FormPaint(Sender: TObject);
begin
GrOfFunc;
end;
¤¤ dastur oynasining o’lchami o’zgardi
procedure
TForm1.FormResize(Sender: TObject);
begin
¤¤ formani tozalash
form1.Canvas.FillRect(Rect(0,0,ClientWidth,ClientHeight));
¤¤ grafikni yasash
GrOfFunc;
end;end.
Ushbu dasturda asosiy ishni
GrOfFunc prosedurasi bajaradi. U dastlab funksiyaning [x1,x2] oraliqdagi
maksimal (u2) va minimal (yl) qiymatlarini hisoblaydi. So’ngra formaning kengligi
(Forml.Clientwidth -40) va balandligi (Form1.ClientHeight - 40) kabi
ma’lumotlarni e’tiborga olib, X o’qi bo’yicha masshtab (mx) va Y o’qi bo’yicha
masshtablarni (mu) topadi.
Grafik
chiqariladigan sirtning balandligi va kengligi formaning ishchi (klient) sohasi
sarlavha va chegaralarni hisobga olmasdan aniqlanadi. Masshtab topilganidan
so’ng, prosedura gorizontal o’qning u
koordinatasini (OY) aniqlaydi va graifkning koordinata o’qlarini chizadi.
So’ngra bevosita funksiyaning grafigini yasashga o’tiladi. (7-rasm).
GrOfFunc
prosedurasiga murojaat qilishni onPaint va onFormResize xodisalarni qayta
ishlash proseduralari bajaradi. TForm1.FormPaint prosedurasi dastur ishga
tushirilib, ekranda forma paydo bo’lgan zahoti grafikni chizilishini
ta’minlaydi. TForm1.FormResize prosedurasi forma o’lchamlari o’zgarganidan
keyin grafik yasashni o’z zimmasiga olgan.
7-rasm. GrOfFunc prosedurasi bilan chizilgan grafik
Keltirilgan
ushbu dastur universal hisoblanadi. Dastur matnidagi f(x) funksiyani almashtirib, boshqa funksiyaning grafigini
ham yasash mumkish. Funksiyaning ko’rinishidan qat’iy nazar, uning grafigi
formani to’la egallaydi.
Eslatma: Sizlarga taklif qilingan dastur grafigi chizilayotgan funksiya ham
manfiy, ham musbat qiymatlar qabul qilganda to’g’ri ishlaydi. Agar sizning
funksiyangiz faqat musbat, yoki faqat manfiy qiymatlarni qabul qilsa, dastur
matniga kichik o’zgartirishlar kiritishingizga to’g’ri keladi. Bu
o’zgarishlarni aniqlash o’zingizga havola.
Комментарии
Отправить комментарий