linkedin facebook linkedin facebook nod32

Delphida grafik imkoniyatlar

Muallif: Mengliyev SH.

Qo`shilgan sana: 2015-04-02

Delphida grafik imkoniyatlar

Delphi dasturchiga grafik dasturlar sxema, chertej, illyustratsiyalar yaratishga imkon beradi. Dastur grafikani ob’ekt (forma eki Image komponentasi) yuzasiga chiqaradi. Ob’ekt yuzasiga canvas xossasi moc keladi. Ob’ekt yuzasiga grafik element (to‘g‘ri chiziq, aylana, turtburchak va hokazo), chiqarish uchun bu ob’ektning canvas xossasiga mos usul qo‘llash lozim. Misol uchun Form1.anvas. Rectangle (10,10,100,100) instruksiyasi dastur oynasida to`rtburchak chizadi.

CHizish sohasi
YUkorida ko‘rilgan canvas xossasi -TCanvas tipidagi ob’ektdir. Grafik primitivlarni chiqarish usullari Canvas xossasini abstrakt chizish sohasi deb qaraydi. CHizish sohasi alohida nuqtalar - piksellardan iborat. Piksel holati uning gorizontal (X) va vertikal (Y) koordinatalari bilan aniqlanadi. CHap yuqori piksel koordinatalari (0,0). Koordinatalar yuqoridan pastga va chapdan o‘ngga qarab o‘sib boradi.
Soha o‘lchovlarini image komponentasining Height i width xossalari va formaning ClientHeight va Clientwidth xossalari orqali aniqlash mumkin.

Qalam
Qalam geometrik figuralarni chizish uchun ishlatiladi. CHiziq ko‘rinishi Tren ob’ektining  quyidagi jadvalda ko‘rsatilgan xossalari orqali aniqlanadi.
Tren (qalam) xossalari.

Xossa

Ta’rifi

Color

CHiziq rangi

Width

CHiziq kalinligi

Style

CHiziq ko‘rinishi

Mode

Akslantirish rejimi

Quyidagi jadvalda color xossasi qiymati sifatida beriluvchi nomlangan konstantalar sanab o‘tilgan.

 

Color xossasi qiymatlari.

Konstanta

Rang

Konstanta

Rang

clBlack

Qora

clSilver

Serebristy

clMaroon

Kashtanovy

clRed

Qizil

clGreen

YAshil

clLime

Salatnыy

clOlive

Olivkovыy

clBlue

Ko‘k (zangori)

clNavy

Tim-ko‘k

clFuchsia

YArko-rozovыy

clPurple

Rozovy

clAqua

Biryuzovy

clTeal

Zeleno-goluboy

clWhite

Oq

clGray

Kul rang

 

 

CHiziq qalinligi width xossasi orqali piksellarda beriladi.
CHiziq turini style xossasi belgilaydi. Quyidagi jadvalda chiziq turini belgilovchi nomlangan konstantalar sanab o‘tilgan.
Style xossasi kiymatlari.

Konstanta

CHiziq ko‘rinishi

psSolid

Uzluksiz chiziq

psDash

Punktir chiziq, uzun shtrixlar

psDot

Punktir chiziq, qisqa shtrixlar

psDashDot

Punktir chiziq, uzun va qisqa shtrixlar ketma ketligi

psDashDotDot

Punktir chiziq, bitta uzun va ikkita qisqa shtrixlar ketma ketligi

psClear

CHiziq aks etmaydi

Mode xossasi chiziq rangining fon rangiga munosabatini ko‘rsatadi. Odatda chiziq rangi Pen.Color xossasi qiymati bilan belgilanadi.
Dasturchi chiziq uchun fon rangiga nisbatan invers rang berishi mumkin. Bu holda hatto chiziq va fon rangi bir xil berilgan bo‘lsa ham chiziq ajralib turadi.
Quyidagi jadvalda Mode xossasi qiymati sifatida ishlatish mumkin bo‘lgan konstantalar berilgan.
Mode xossasi qiymatlari

Konstanta

CHiziq rangi

pmBlack

Qora, Pen. Color xossasi qiymatiga bogliq emas

pmWhite

Ok, Pen. Color xossasi qiymatiga bog‘liq emas

pmCopy

CHiziq rangi Pen. Color xossasi qiymatiga bog‘liq

pmNotCopy

CHiziq rangi Pen. Color xossasi qiymatiga invers

pmNot

CHiziq rangi sohaning mos nuqtasi rangiga  invers

Muyqalam
Muyqalam (Canvas.Brush) yopiq sohalarni chizish va soha ichini bo‘yash uchun mo‘ljallangan usullardan foydalaniladi. Muyqalam ob’ekt jadvalda ko‘rsatilgan ikki xossaga ega.
TBrush (muyqalam) xossalari.

Xossa

Ta’rifi

Color
Style

Epiq sohani bo‘yash rangi
Sohani to‘ldirish uslubi

Kontur ichidagi soha bo‘yalishi yoki shtrixlanishi mumkin.
Sohani to‘ldirish usulini belgilovchi konstantalar quyidagi jadvalda berilgan.
Brush.style xossasi qiymatlari.

Konstanta

Soha bo‘yash uslubi

bsSolid

Uzluksiz bo‘yash

bsClear

Soha bo‘yalmaydi

bsHorizontal

Gorizontal shtrixlash

bsVertical

Vertikal shtrixlash

bsFDiagonal

Diagonal shtrixlash, oldinga og‘ish

bsBDiagonal

Diagonal shtrixlash, orqaga og‘ish

bsCross

Katakli gorizontal-vertikal shtrixlash

bsDiagCross

Katakli diagonal shtrixlash

Misol tariqasida sohalarni bo‘yash usullari dasturini keltiramiz.

Sohani bo‘yash usullari dasturi matni
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
implementation

{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
const
bsName: array[1..8] of string =
('bsSolid','bsClear','bsHorizontal',
'bsVertical','bsFDiagonal','bsBDiagonal',
'bsCross','bsDiagCross');
var
x,y: integer;
w,h: integer;
bs: TBrushStyle;
k: integer;
i,j: integer;

begin
button1.visible:=false;
w:=60; h:=40;
y:=80;
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;
Canvas.Brush.Color := clGreen;
Canvas.Brush.Style := bs;
Canvas . Rectangle (x, y, x+w, y-h) ;
Canvas.Brush.Style := bsClear;
Canvas.TextOut(x, y-55, bsName[k]);
x := x+w+30;
end;
y:= y+h+30;
end;
end;
end.

Matnni chiqarish
Grafik ob’ekt yuzasiga matn chiqarish uchun TextOut usuli qo‘llaniladi. Bu usulni chaqirish instruksiyasi quyidagi ko‘rinishga ega:
Ob’ekt.Canvas.TextOut(x, u, Tekst)
Matn shrifti Font xossasi qiymati bilan aniqlanadi. Font xossasi TFont tipidagi ob’ekdir. Quyidagi jadvalda TFont ob’ekti xossalari keltirilgan.
TFont  ob’ekti xossalari

Xossa

Ta’rifi

Name

Size

Style

SHrift nomi, masalan  Arial

SHrift punktlarda kattaligi

Simvollar chiqarish uslubi. Quyidagi konstantalar orqali beriladi: fsBold (polujirnыy), fsltalic (kursiv), fsUnderline (podcherknuty), fsStrikeOut (perecherknuty).

 

 

Color

Bu xossa bir necha uslublarni kombinatsiyasini olishga imkon beradi. Masalan: Ob’ekt. Canvas . Font : = [fsBold, fs Italic]
Simvollar rangi.

Matn chiqarish sohasi muyqalam joriy rangiga buyaladi. SHuning uchun matn chiqarishdan oldin Brush. Color xossasiga bsClear qiymatini yoki soha rangiga mos qiymatni berish lozim.
Misol:
with Form1.Canvas do begin
Font.Name := 'Tahoma';
Font.Size := 20;
Font.Style := [fsltalic, fsBold] ;
Brush.Style := bsClear;
TextOut(0, 10, 'Borland Delphi 6');
end;

Textout uslubi orqali matn ekranga chiqarilgandan so‘ng qalam matn chiqarish sohasining yuqori o‘ng burchagiga keltiriladi.
Agar matn uzunligi ma’lum bo‘lmasa, chiqarilgan matn o‘ng chegarasi koordinatalarini PenPos xossasiga murojaat qilib aniqlash mumkin.

Misol:
with Form1.Canvas do begin
TextOut(0, 10, 'Borland ') ;
TextOut(PenPos.X, PenPos.Y, 'Delphi ');
end;

Grafik primitivlarni chizish usullari
CHiziq
To‘g‘ri chiziq LineTo usuli orqali amalga oshiriladi.
Komponent.Canvas.LineTo(x,u)
LineTo usuli qalam joriy pozitsiyasidan berilgan koordinatali nuqtagacha to‘g‘ri chiziq chizadi. Boshlangich nuqtani kerakli nuqtaga ko‘chirish uchun MoveTo usulidan foydalanish mumkin.

Tutashgan chiziq
O‘zaro tutashgan kesmalardan iborat shaklni chizish uchun polyline usulidan foydalaniladi. Bu usul parametri TPoint tipli massivdan iborat.
Polyline usuliga misol tariqasida ma’lum qiymat o‘zgarishi grafigini chizuvchi protseduracini keltiramiz:

procedure TForml.Button1Click(Sender: TObject);
var
gr: array[1..50] of TPoint;
x0,y0: integer;
dx,dy: integer;
i: integer; begin
x0 := 10; u0 := 200; dx :=5; dy := 5;
for i:=l to 50 do begin
gr[i].x := x0 + (i-l)*dx;
gr[i].y := y0 - Data[i]*dy;
end;
with forml.Canvas do begin
MoveTo(x0,y0); LineTo(x0,10);
MoveTo(x0,y0); LineTo(200,y0);
Polyline(gr);
end;
end;

Polyline usuli yordamida  yopiq ko‘pburchak chizish uchun massivning birinchi va oxirgi elementi bir nuqtaning koordinatalaridan iborat bo‘lishi kerak.

Aylana va ellips
Aylana yoki ellips chizish uchun Ellipse usuli chaqiriladi. Usulni chaqirish instruksiyasi umumiy ko‘rinishi:
Ob’ekt.Canvas.Ellipse(x1,y1, x2,u2).
Bu erda x1, y1, x2, u2 – ellipsni o‘z ichiga olgan minimal turtburchak koordinatalari. Agar turtburchak kvadrat bo‘lsa aylana chiziladi.

Ey
YOyni chizish uchun Arc usuli qo‘llaniladi va u quyidagi umumiy ko‘rinishga ega:
Ob’ekt.Canvas.Arc(x1,y1,x2,u2,x3,u3,x4,u4)
Bu erda:

  • x1, y1, x2, u2 - yoyga tegishli bo‘lgan ellips yoki aylana parametrlari;
  • x3, u3 - yoy boshlang‘ich nuktasi parametrlari;
  • x4, u4 - so‘ngi nuqtasi parametrlari.

YOy soat miliga teskari tartibda chiziladi.

To‘rtburchak
To‘rtburchak Rectangle usuli bilan chizilib, bu usulni chaqirish instruksiyasi umumiy ko‘rinishi quyidagicha:
Ob’ekt.Canvas.Rectangle(x1, y1,x2, y2)
Bu erda x1, y1 va x2, u2 — chapgi yuqori va o‘nggi pastgi burchaklar  koordinatalari.
RoundRec usuli burchaklari yumaloq to‘rtburchak chizishga imkon beradi. RoundRec usulini chakirish instruksiyasi kuyidagi kurinishga ega:
Ob’ekt.Canvas.RoundRec(x1,y1,x2, u2, x3, u3)
Bu erda:

  • x1, y1, x2, u2 – turtburchak parametrlari;
  • x3 i u3 — chorak kismi yumalok burchak chizish uchun ishlatildadigan ellips kattaligi.

YA’na ikki usul muyqalamdan foydalanib to‘rtburchak chizishga imkon beradi. FillRect usuli ichi bo‘yalgan to‘rtburchak chizadi, FrameRect - faqat  kontur. Bu usullarda faqat bitta parametrga ega -TRect tipidagi struktura. Quyidagi misolda FillRect va FrameRect usullari orqali forma yuzasiga qizil turtburchak soha va yashil konturli to‘rtburchak chizuvchi protsedura keltirilgan.

procedure TForm1.Button1Click(Sender: TObject);
var
r1, r2: TRect;
begin
r1 := Rect(20,20,60,40);
r2 := Rect(10,10,40,50);
with form1.Canvas do begin
Brush.Color := clRed;
FillRect(r1);
Brush.Color := clGreen;
FrameRect(r2};
end;
end;

Ko‘pburchak
Polygon usuli ko‘pburchak chizishga mo‘ljallangan bo‘lib, parametri TPoint tipidagi massivdir. Massivning har bir elementi (x,u) maydonlari ko‘pburchak uchi koordinatalaridan iborat bo‘lgan yozuvdir.
Quyida polygon usuli yordamida uchburchak chizish protsedurasi keltirilgan:

procedure TForm1.Button2Click(Sender: TObject);
var
pol: array[1..3] of TPoint;
begin
pol[1].x := 10;
polf1].y := 50;
pol[2].x := 40;
pol[2].y := 10;
pol[3].x := 70;
pol[3].u := 50;
Form1.Canvas.Polygon(pol);
end;

Sektor
Ellips yoki aylana sektori pie usuli bilan chizilib, chaqirish instruksiyasi quyidagi umumiy ko‘rinishga ega:
Ob’ekt. Canvas.Pie(x1,y1,x2,y2,x3,u3,x4,u4)
Bu erda:

  • x1, y1, x2, u2 - ellips yoki aylana parametrlari;
  • x3, u3, x4, u4 - sektor chegarasini tashkil qiluvchi to‘g‘ri chiziqlar oxirgi nuktalari koordinatalari.

Nuqta
Canvas ob’ektining pixels xossasi tipidagi ikki o‘lchovli massiv bo‘lib har bir soha nuqtasining rangi haqidagi ma’lumotni o‘z ichiga oladi. Pixels xossasidan foydalanib ixtiyoriy nuqta rangini o‘zgartirish, ya’ni nuqta chizish mumkin. Misol uchun
Form1.Canvas.Pixels[10,10]:=clRed
Instruksiyasi soha nuqtasini qizil ranga bo‘yaydi.
Quyida keltirilgan dastur pixels xossasidan foydalanib, u = 2 sin(jc) e*/5 funksiyasi grafigini chiqaradi.

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
     Function f(x:real):real;
begin
f:=2*Sin(x)*exp(x/5) ;
end;
procedure GrOfFunc;
var
x1,x2:real;
y1,y2:real;
x:real;
y:real;
dx:real;
 l,b:integer;
w,h:integer;
mx,my:real;
x0,y0:integer;
begin
l:=10;
b:=Form1.ClientHeight-20;
h:=Form1.ClientHeight-40;
w:=Form1.Width-40;
x1:=0;
x2:=25;
dx:=0.01;
y1:=f(x1);
y2:=f(x1);
x:=x1;
repeat
y := f (x);
if y < y1 then y1:=y;
if y > y2 then y2:=y;
x:=x+dx; until (x >= x2);
my:=h/abs(y2-y1);
mx:=w/abs(x2-x1);
x0:=1;
y0:=b-Abs(Round(y1*my)) ;
with form1.Canvas do
begin
// osi
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);
Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;
x:=x+dx;
until (x >= x2);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Visible:=false;
GrOfFunc;
end;
end.
Asosiy vazifani GrOfFunc protsedurasi bajaradi. Avval [x1,x2] oraliqda funksiyaning maksimal (u2) va minimal (yl) qiymatlari hisoblanadi. So‘ngra koordinatalar u ki bo‘yicha masshtab hisoblanadi. SHundan so‘ng protsedura grafikni quradi.

1341 marta o`qildi.

Foydalanuvchi ismi: Oyrajab H
Qo`shilgan sana: 2015-04-08

yaxshi

Foydalanuvchi ismi: Oyrajab H
Qo`shilgan sana: 2015-04-08

yaxshi

Foydalanuvchi ismi: Oyrajab H
Qo`shilgan sana: 2015-04-08

yaxshi

Foydalanuvchi ismi: Oyrajab H
Qo`shilgan sana: 2015-04-08

yaxshi

Foydalanuvchi ismi: zokir
Qo`shilgan sana: 2015-04-16

zur yahshi chiqipdi omad yangi maqolardi kutip qolaman:javob: rahmat

Foydalanuvchi ismi: rivoj
Qo`shilgan sana: 2015-04-16

yaxshi

Foydalanuvchi ismi: Mahbuba
Qo`shilgan sana: 2015-04-16

Qiziqarli dastur ekan,yaxshi

Foydalanuvchi ismi: rivoj 203
Qo`shilgan sana: 2015-04-16

ajoyib

Foydalanuvchi ismi: Eshboyev Quvonchbek
Qo`shilgan sana: 2015-04-17

ajpoyib

Foydalanuvchi ismi: ILHOM 203
Qo`shilgan sana: 2015-04-22

yaxshi

Foydalanuvchi ismi: Ilxam93
Qo`shilgan sana: 2015-05-14

Assalamu aleykum!!! Delphi da yuqori darajadagi oyinlar ishlash mumkinmi? javob: ha

Parol:
Eslab qolish.


Ro`yhatdan o`tish

testing

+998915878681

Siz o`z maxsulotingizni 3D reklama ko`rinishda bo`lishini xohlaysizmi? Unda xamkorlik qilamiz.

3D Reklama


Рейтинг@Mail.ru
Рейтинг@Mail.ru

Besucherzahler
счетчик посещений