Color hususiyatining qiymatlari 11.2-jadval
Konstanta
|
Rang
|
Konstanta
|
Rang
|
clBlack
|
Qora
|
clSilver
|
Kumush rang
|
clMaroon
|
Kashtan rang
|
clRed
|
Qizil
|
clGreen
|
YAshil
|
clLime
|
Salat rang
|
clOlive
|
Zaytun rang
|
clBlue
|
Moviy
|
clNavy
|
To`q ko`k
|
clFuchsia
|
To`q qizil
|
clPurple
|
Qizil
|
clAqua
|
Feruza rang
|
clTeal
|
Ko`kimtir yashil
|
clWhite
|
Oq
|
clGray
|
Kul rang
|
|
|
Width hususiyati chiziq qalinligini piksellarda ko`rsatadi. Masalan:
Canvas. Pen. Width :2
buyrug’i qalinligi 2 piksel bo`lgan chiziqni anglatadi.
Style hususiyati chiziq ko`rinishini (stilini) bildiradi. Chiziq uzluksiz yoki uzlukli (uzuq-uzuq) ko`rinishlaridan birida bo`ladi. 11.3-jadvalda stillarni belgilovchi nomlangan konstantalar ro`yxati keltirilgan. Punktir chizig’ining qalinligi 1 pikseldan katta bo`la olmaydi. Agar Pen.width ning qiymati 1 dan katta bo`lsa, u holda punktir chizig’i uzluksiz bo`ladi.
Ren.width hususiyatining qiymatlari 11.3-jadval
Konstanta
|
Chiziqning ko`rinishi
|
psSolid
|
Uzluksiz chiziq
|
psDash
|
Uzun shtrixli punktir chiziq
|
psDot
|
Kalta shtrixli punktir chiziq
|
psDashDot
|
Uzun va kalta shtrixli punktir chiziq
|
psDashDotDot
|
Bitta uzun, ikkita kisqa shtrixli punktir chiziq
|
psClear
|
Chiziq ko`rinmaydi. (soha chegarasi ko`rinmasligi kerak bo`lgan hollarda qo`llanadi)
|
Mode hususiyati nuqta rangiga bog’liq ravishda piksellar rangining qanday bo`lishini belgilaydi. Agar ko`rsatilmagan bo`lsa, chiziqlar Pen.Color hususiyatida ko`rsatilgan rang bilan chiziladi. Ammo, dasturchi fon rangiga nisbatan inversion rangni ham belgilashi mumkin. Bunda fon rangiga bog’liq bo`lmagan holda chiziqning to`la ko`rinishi ta`minlanadi.
Pen.Mode hususiyati. 1.4 –jadval
Konstanta
|
Chiziqning rangi
|
pmBlack
|
Qora, Pen.Color hususiyatiga bog’liq emas
|
pmWhite
|
Oq, Pen.Color hususiyatiga bog’liq emas
|
pmCopy
|
Chiziq rangi Pen.Color hususiyatiga ko`ra tanlanadi.
|
pmNotCopy
|
Chiziq rangi Pen.Color hususiyatiga inversion.
|
pmNot
|
Chiziq rangi xolst rangiga nisbatan inversion.
|
Cho`tka. Canvas.Brush metodidan yopiq sohalarga fon berish uchun foydalaniladi. Cho`tkaning ikkita hususiyati mavjud: Color hususiyati fon uchun rang, Style esa sohaga fon berish uchun stil belgilaydi. Stil nomlari va ularni belgilovchi parametrlar 11.5-jadvalda berilgan.
Konturning yopiq ichki sohasi bo`yalgan yoki fon berilgan bo`lishi mumkin. Birinchi holda soha to`laligicha fonni yopadi, ikkinchisida esa esa shtrixlanmagan joylarda fon ko`rinib turadi. Color ning hususiyatlari sifatida 11.2-jadvalda keltirilgan ranglardan foydalanish mumkin.
Brush.style hususiyatining qiymatlari 11.5-jadval
Konstanta
|
Sohani to`ldirish tipi (foni)
|
bsSolid
|
Uzluksiz fon bilan to`ldirish
|
bsClear
|
Soha bo`yalmaydi
|
bsHorizontal
|
Sohaga gorizontal shtrixli fon berish
|
bsVertical
|
Sohaga vertikal shtrixli fon berish
|
bsFDiagonal
|
Sohaga old tomonga qiyshaygan shtrixli fon berish
|
bsBDiagonal
|
Sohaga orqaga qiyshaygan shtrixli fon berish
|
bsCross
|
Kataksimon shtrixovkali fon
|
bsDiagCross
|
Qiyshiq chiziqli kataksimon fon
|
Namuna sifatida 11.1-listingda sohaga fon berish stillari namoyish qilingan bo`lib, ekranga (11.2-rasm) qora rangli va foni turli stillarda bo`lgan sakkizta to`g’ri to`rtburchak chiqariladi.
11.2-rasm. Sohaga fon berish stillari dasturining oynasi
11.1-listing. Fon berish stillari.
procedure TForm1.Image1Click(Sender: TObject);
const
bsName: array[1..8] of string ('bsSolid','bsClear','bsHorizontal',
'bsVertical','bsFDiagonal','bsBDiagonal', 'bsCross','bsDiagCross');
var
x,y: integer; To`rtburchak chap yuqori burchagi koordinatalari
w,h: integer; to`rtburchakning kengligi va balandligi
bs: TBrushStyle; fon berish stili
k: integer; fon berish stili rangi
i, j: integer;
begin
w : 40; h : 40; soha (to`rtburchak) o`lchamlari
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 : bsHorizontal;
4: bs : bsVertical;
5: bs : bsFDiagonal;
6: bs : bsBDiagonal;
7: bs : bsCross;
8: bs : bsDiagCross;
end;
to`rtburchak yasash
Canvas.Brush.Color : clGreen; bo`yash uchun rang
Canvas.Brush.Style : bs; fon uchun stil
Canvas . Rectangle (x, y, xw, yh) ; stil nomini chiqarish
Canvas.Brush.Style : bsClear;
Canvas.TextOut(x, y-15, bsName[k]);
x : x w 30;
end;
y : y h 30;
end;
end;
end.
11.1-listingda matnni Canvas ga chiqarish uchun TextOut metodi qollangan. Bu metodni umumiy ko`rinishda qo`yidagicha yozish mumkin:
Ob’yekt.Canvas.TextOut(x, y, Matn);
Bu yerda ob’yekt - sirtiga matn chiqariladigan ob’yekt nomi; x, y –nuqta koordinatalari; Matn - belgili o`zgaruvchi yoki matn bo`lib, qiymati sirtning (x, y) koordinatali nuqtasidan boshlab ekranga chiqariladi. Matnni ekranga chiqarishda shrift Canvas ob’yektining Font hususiyati yordamida ko`rsatiladi. Font tipidagi ob’yektlar Size, Style va Color kabi hususiyat-larga ega bo`lib, ulardan TextOut va TextRect metodlarida foydalaniladi.
Diqqat!: Matn chiqariladigan soha cho`tkaning joriy rangi bilan bo`yalgan bo`ladi. SHuning uchun matnni ekranga chiqarishdan avval Brush.Color hususiyatiga bsClear qiymatini berish yoki cho`tkaga sirt rangi bilan bir hil qiymatni o`zlashtirish lozim.
Quyidagi dastur parchasi forma sirtiga matnlarni chiqarish uchun Textout funksiyasidan foydalanishga namuna bo`la oladi.
with Form1.Canvas do begin
shrift xarakteristikalarini belgilash
Font.Name : 'Time New Roman';
Font.Size : 14;
Font.Style : [fsltalic, fsBold] ;
Brush.Style : bsClear; matnni chiqarish sohasi bo`yalmaydi
TextOut(0, 10, 'Borland Delphi 7');
end;
Matn Textout metodi bilan sirtga chiqarilganidan so`ng, chiqarish ko`rsatkichi (qalam) sohaning o`ng yuqori burchagiga joylashadi.
Ayrim hollarda, uzunligi noma`lum bo`lgan axborotdan keyin qandaydir matnni chiqarishga to`g’ri keladi. Masalan, biror sonni xarflar bilan yozgandan keyin “so`m” so`zini chiqarish kerak bo`lisin. Bu holda chiqarilgan matnning o`ng tomon koordinatasini aniqlash lozim. TextOut metodi bilan chiqarilgan matnning o`ng tomondagi koordinatasini PenPos metodi bilan aniqlash mumkin. Quyidagi dastur parchasi matn satrlarini ikkita TextOut yordamida chiqarishni namoyish qiladi.
with Form1.Canvas do begin
TextOut(0, 10, 'Borland ') ;
TextOut(PenPos.X, PenPos.Y, 'Delphi 7');
end;
12.3. Sodda grafik elementlarni chizish uchun metodlar
Ixtiyoriy tasvirni sodda grafik elementlar (nuqta, chiziq, aylana, yoy va x.k.) to`plami deb qarash mumkin. Shuning uchun, biror tasvirni hosil qilish uchun dastur bu tasvirni tashkil qiluvchi sodda grafik elementlarni chizishni ta`minlashi lozim.
Chiziqlar. To`g’ri chiziqlarni chizish uchun LineTo metodidan foydalaniladi. Bu metodni umumiy ko`rinishda quyidagicha yoziladi:
Komponent.Canvas.LineTo(x,u)
LineTo metodi qalamning joriy pozitsiyasi va ko`rsatilgan koordinatali nuqtalarni birlashtiruvchi kesma yasaydi.
Boshlang’ich nuqtani (qalamni) xolstning kerakli pozitsiyasiga o`rnatish uchun MoveTo metodidan foydalaniladi. CHiziqning ko`rinishi Pen komponentasi hususiyatlari bilan aniqlanadi.
Koordinatalar o`qi va raqamli to`r tasvirini (11.4-rasm) hosil qilish dasturi 11.2-listingda keltirilgan.
11.2-listing. Koordinata o`qlari va raqamlangan to`r
procedure TForm1.FormPaint(Sender: TObject);
var
x0,y0:integer; koordinata o`qlarining boshlang’ich nuqtasi
dx,dy: integer; to`ning qadami (piksellarda)
h,w: integer; to`r sohasininrg balandligi va kengligi
11.4-rasm. Koordinata to`ri dasturining oynasi
x, y: integer;
lx, ly: real; to`r chiziqlarini raqamlash (X va Y bo`yicha)
dlx, dly: real; chiziqlarini belgilash qadami (X va Y bo`yicha)
cross: integer; raqamlanmagan to`r chiziqlarining hisoblagich
dcross: integer; raqamlanmagan chiziqlar miqdori
begin
x0 : 30; y0 : 220; o`qlar (40,250) nuqtadan boshlanadi.
dx : 40; dy : 40; koordinata to`rining qadami 40 piksel
dcross : 1;
dlx : 0.5; X o`qini belgilash qadami
dly : 1.0; U o`qini 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`r 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
end;
end;
end.
Ushbu dasturning o`ziga hos tomoni shundaki, u to`r qadamlari va raqamlash usulini belgilashga imkon beradi. Bundan tashqari, dastur X o`qi to`rining har bir chizig’ini emas, balki oralatib ham raqamlay oladi.
Siniq chiziq. Polyline metodi kanvada siniq chiziq yasash uchun xizmat qiladi. Uning parametri har bir elementi sinish nuqtalari koordinatalarini anglatuvchi Tpoint tipidagi massivdan iborat bo`lib, sinish nuqtalarini ketma-ket kesmalar bilan birlashtiradi.
Polyline metodidan yopiq konturlarni chizish uchun ham foydalanish mumkin. Buning uchun metodning parametri bo’lgan massivning birinchi va oxirgi elementlari bir hil bo`lishi lozim. Namuna uchun 11.3-listingdagi dasturni ko`raylik. Bu dastur ilova oynasi sirtida sichqoncha tugmasi chertilgan joyda besh yulduz tasvirini (11.5-rasm) yasaydi. Yulduz chizilgan rang sichqonchaning qaysi tugmasi chertilishiga bog’liq. Sichqoncha tugmasini chertish (MouseDown xodisasi) yulduz chizish protsedurasi StarLine ni chaqiradi va unga parametr sifatida sichqoncha chertilgan nuqta koordinalarini uzatadi. StarLine protsedurasi parametr sifatida yulduz markazi koordinatalari hamda xolstni oladi. Dastlab, yulduzning uchlari va chuqurligi koordinatalari hisoblanadi va p massivga yoziladi va PolyLine metodiga parametr qilib uzatiladi. P massiv elementlarini hisoblashda qutb koordinatalaridan foydalananiladi.
11.3-listing. Yopiq kontur (yulduz) chizish
procedure StarLine(x0, y0, r: integer; Canvas: TCanvas);
x0, y0 – Yulduz markazi koordinatasi
r – yulduz radiusi
var
p : array[1..17] of TPoint; uch chuqurliklari 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 birinchi va oxirgi elementlari ustma-ust tushadi.
Aylana va ellips. Ellips yoki aylana tasvirini chizish uchun Ellipse metodidan foydalaniladi. Metodni quyidagicha yozish mumkin:
Ob’yekt.Canvas.Ellipse(x1, y1, x2, y2]
Bu yerda ob’yekt - sirtida tasvir yasaladigan ob’yekt nomi; x1, y1, x2, y2 — aylana yoki ellipsga tashqi chizilgan to`g’ri to`rtburchak koordinatalari.
11.5-rasm. Yulduz
koordinatalari. Agar to`g’ri to`rtburchak kvadratdan iborat bo`lsa aylana, aks holda ellips chiziladi. (11.6-rasm).
Chiziq rangi, qalinligi va stili Pen hususiyati bilan aniqlanadi. Shaklning ichki rangi va fon stili Brush hususiyati bilan belgilanadi.
11.6-rasm. Chiziladigan figura Ellipse metodi parametrlariga bog’liq
Yoy. Yoylarni Arc metodi bilan yasash mumkin. Bu metodni umumiy ko`rinishda quyidagicha yozish mumkin:
Ob’yekt.Canvas.Arc(x1, y1, x2, y2, x3, y3, x4, y4)
Bu yerda x1, y1, x2, y2 - chizilayotgan yoyning asosi bo`lgan ellips (aylana) parametrlari; x3, y3 - yoyning boshlanish nuqtasini, x4, y4 - lar esa tugash nuqtasini belgilaydigan parametrlar. Yoy rangi, qalinligi va stili Canvas ning Pen hususiyatlari bilan ko`rsatiladi.
To`g’ri to`rtburchak. To`g’ri to`rtburchaklar Rectangle metodi bilan chiziladi. Bu metodning umumiy ko`rinishi quyidagicha:
11.7-rasm. Yoy ellips (aylana) ning ma`lum bir qismidan iborat.
Ob’yekt.Canvas.Rectangle(x1, y1,x2, y2)
Bu yerda Ob’yekt - sirtida rasm chiziladigan ob’yekt nomi; x1, y1 va x2, y2 - to`g’ri to`rtburchakning chap yuqori va o`ng quyi burchak koordinatalari.
RoundRec metodi uchlari yoysimon bo`lgan to`g’ri to`rtburchak yasash uchun foydalaniladi. Bu metod umumiy ko`rinishda
Ob’yekt.Canvas.RoundRec(x1, y1, x2, y2, x3, y3)
tarzida ishga tushiriladi. 11.8-rasm).
11.8-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. Ichki rangi va fon stili esa Canvas ning Brush hususiyatlari bilan belgilanadi.
To`g’ri to`rtburchak yasash uchun yana ikkita metod mavjud bo`lib, ular qalam o`rniga mo`yqalamdan foydalanadi. FillRect metodi bo`yalgan to`g’ri to`rtburchak, FrameRect metodi esa faqat to`rtburchak konturini yasaydi. Metodlarning har ikkisida faqat bitta parametr - TRect tipidagi struktura qatnashadi. Bu struktura maydonlari to`rtburchakli soha koordi-natalarini saqlaydi. Ularni Rect funksiyasi yordamida aniqlash mumkin.
Ko`pburchak. Polygon metodi ko`pburchak chizish uchun xizmat qiladi. Metodning parametri Tpoint tipdagi massivdan iborat. Bu massiv-ning har bir elementi burchak uchlarini ko’rsatuvchi x va y maydonlaridan iborat yozuvdan iborat. Polygon metodi koordinatalari massivda ko`rsatil-gan nuqtalarni kesmalar bilan birlashtiradi. Chiziqlarining rangi, qalinligi va stili Pen hususiyati bilan, ichki rangi va fon stili esa Brush hususiyati bilan belgilanadi. Yopiq soha mo`yqalamning joriy rangi va stilida bo`yaladi. Quyidagi protsedura Polygon metodi bilan uchburchak yasaydi.
procedure TForm1.Button2Click(Sender: TObject);
var
pol: array[1..3] of TPoint; burchak 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. Sektorlar yasashda Pie metodidan foydalaniladi. Uning umumiy ko`rinishi quyidagicha
Ob’yekt. Canvas.Pie(x1, y1, x2, y2, x3, u3, x4, y4)
Bu yerda x1, y1, x2, y2 - sektorning asosi bo`lgan ellipsni (aylanani) aniqlaydigan parametrlar; x3, y3, x4, y4 - sektor chegarasi bo`lgan to`g’ri chiziqlarning oxirgi nuqtalari koordinatalari.
To`g’ri chiziqning boshlang’ich nuqtalari ellips (aylana) markazi bilan ustma-ust tushadi. Sektor soat millariga teskari yo`nalishda kesib olinadi. U koordinatalari (x3,y3) bo`lgan nuqtadan boshlanib, (x4, y4) koordinatali nuqtada tugaydi. (11.9-rasm).
Nuqta. Pixels hususiyati yordamida sirtning ixtiyoriy nuqtasiga rang berish mumkin. Bu buyruq umumiy ko`rinishda quyidagicha yoziladi:
Ob’yekt.Canvas.Pixels[x, y] : rang;
Bu yerda [x, y]-rang beriladigan nuqta koordinatasi, rang- 11.2-jadvaldagi ranglardan biri. Masalan,
11.9-rasm. Pie metodi parametrlariga sektorning bog’liqligi
Form1.Canvas.Pixels[10,10] : clRed;
buyrug’i forma sirtidagi (10, 10) koordinatali nuqtaga qizil rang beradi.
Pixels ning parametrlari grafik sirt o`lchamlari (Clientwidth va ClientHeight hususiyatlari) bilan aniqlanadi, Image komponentasi o`lchamlari esa Width va Height hususiyatlari orqali belgilanadi.
Pixels hususiyatidan funksiya grafiklarini yasashda foydalanish mumkin. Odatda grafiklar biror formula bo`yicha hisoblashlar asosida quriladi. Funksiya argumentining o`zgarish diapazoni boshlang’ich ma`lumot deb qabul qilinadi. Funksiya qiymatlarining o`zgarish diapazoni oddiy hisob yordamida topiladi. Grafik forma yoki sirtni to`la egallash uchun masshtab kiritish mumkin.
Quyidagi dastur (11.5-listing) pixels hususiyati yordamida funksiyasi grafigini chizadi. Grafik chizish uchun sohaning mumkin bo`lgan barcha qismi band qilinadi. Agar foydalanuvchi dasturning ishi davomida oyna o`lchamlarini o`zgartirsa, grafik yangi masshtab bo`yicha yangidan chiziladi.
11.5-listing. Funksiyaning grafigi
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; funksiya argumenti
y: real; funksiyaning 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] dagi eng katta va eng kichik qiymatlari
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 : xdx;
until (x>x2);
masshtab aniqlanmoqda
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(x0w, y0);
TextOut(l5, b-h, FloatToStrF(y2, ffGeneral, 6, 3));
TextOut(l5, b, FloatToStrF(y1, ffGeneral, 6, 3));
grafik yasash
x : x1;
repeat
y : f(x);
Pixels[x0Round(x*mx),y0-Round(y*my)] : clRed;
X : x dx;
until (x>x2);
end;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
GrOfFunc;
end;
dastur oynasi o`lchamlari 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 protsedurasi bajaradi. U dastlab funksiyaning [x1, x2] kesmadagi maksimal (y2) va minimal (yl) qiymatlarini hisoblaydi. So`ngra forma kengligi (Forml.Clientwidth-40) va balandligi (Form1.ClientHeight-40) kabi ma`lumotlardan foydalanib, X va Y o`qlari bo`yicha (mx) va (my) masshtablarni topadi (11.10-rasm).
GrOfFunc protsedurasiga murojaat qilish onPaint va onFormResize protseduralari yordamida bajariladi. TForm1.FormPaint protsedurasi forma ochilgan zahoti grafik chizilishini ta`minlaydi. TForm1.FormResize protsedurasi forma o`lchamlari o`zgarganidan keyin grafik yasashni o`z zimmasiga oladi.
Keltirilgan dastur universal bo`lib, undagi f(x) funksiyani boshqasi bilan almashtirib, uning ham grafigini yasash mumkin.
Eslatma: Ushbu dastur funksiya manfiy va musbat qiymatlarni qabul qilganda ham to`g’ri ishlaydi. Agar funksiya faqat musbat (manfiy) qiymatlarni qabul qilsa, dasturga kichik o`zgartirish kiritish lozim.
11.10-rasm. GrOfFunc protsedurasi bilan chizilgan grafik
Do'stlaringiz bilan baham: |