Windows.  Viruslar.  Noutbuklar.  Internet.  Idora.  Utilitalar.  Haydovchilar

Displey uchun Visual Component Library (VCL) Delphi grafik ma'lumotlar bizga quyidagi vizual komponentlarni taqdim etadi: Image (tasvir), PaintBox (chizish uchun oyna), DrawGrid (rasmlar jadvali), Chart (diagramma va grafiklar), Animate (videokliplarni chiqarish) va Form. Ushbu komponentlar har bir pikselga kirish imkonini beruvchi Canvas xususiyatiga ega (yuqorida muhokama qilingan). Albatta, Delphida grafikalar bilan ishlash uchun piksel-piksel chizish shart emas, Delphi tizimi grafiklar bilan ishlash uchun kuchli vositalarni taqdim etadi.

Keling, yuqoridagi komponentlarni batafsil ko'rib chiqaylik:

Tasvir komponenti

TImage sinfining ob'ekti. Grafik fayllardan o'qilgan tasvirlarni ko'rsatish uchun ishlatiladi. Odatiy bo'lib, forma yuzasida *.bmp formatida taqdim etilgan tasvirlarni ko'rsatadi. Tasvirlarni jpg formatida chiqarish uchun siz JPEG modulini uses direktivasiga kiritishingiz kerak. Komponentlar palitrasining Qo'shimcha yorlig'ida joylashgan.

Formaga Image komponentini joylashtirgandan so'ng, u tanlangan to'rtburchak maydon shaklini oladi.

9-rasm - Shakldagi rasm komponenti

Kerakli tasvirni tanlash uchun dialog oynasini ochish uchun Ob'ekt inspektori yordamida quyidagilarni bajarishingiz kerak. Buning uchun Picture xususiyatini toping va uning chap tomonidagi uchta nuqta ustiga bosing. Rasm muharriri oynasi ochiladi va unda Yuklash-ni tanlang, ochilgan oynada rasm faylini tanlang.

Buni Picture xususiyatining LoadFromFile usulini chaqirish orqali ham dasturiy tarzda amalga oshirish mumkin:

Image1.Picture.LoadFromFile("name_pic.jpeg");

bu yerda name_pic.jpeg fayl nomi.

8-jadval – Image komponentining asosiy xossalari

Mulk

Tavsif

Tasvir komponent maydonida ko'rsatiladi

Komponentlarning o'lchamlari. Agar bu o'lchamlar rasm o'lchamidan kichikroq bo'lsa va Stretch, AutoSize va Proportional xususiyatlari "False" ga o'rnatilgan bo'lsa, tasvirning bir qismi ko'rsatiladi.

Tasvirlarni buzilmasdan avtomatik ravishda o'lchash imkonini beradi. Masshtabni amalga oshirish uchun AutoSize xususiyati False ga o'rnatilishi kerak

Tasvir komponentining oʻlchamiga mos keladigan tasvirni avtomatik ravishda masshtablash (qisqartirish yoki choʻzish) imkonini beradi. Agar komponentning o'lchami tasvirning o'lchamiga mutanosib bo'lmasa, u holda tasvir buziladi

Tasvir o'lchamiga mos keladigan komponentni avtomatik ravishda o'zgartirish imkonini beradi

Tasvirning kengligi komponentning kengligidan kichik bo'lsa, Image komponentining maydonida tasvirning gorizontal holatini aniqlash imkonini beradi.

Grafiklarni ko'rsatish uchun sirt

Shaffof tasvir fon rangini belgilaydi

1-misol: Image komponentidan foydalanib tasvirlarni ko'rish dasturini yozing. Dastur quyidagi imkoniyatlarga ega bo'lishi kerak:

  • · papkadagi tasvirlarni ko'rish;
  • · tasvirni to‘liq hajmda yoki oyna o‘lchamiga eng mos formatda ko‘rish;
  • · tasvir fayllarini boshqarish, shuningdek tasvirlarni chop etish, saqlash, o‘chirish va tahrirlash;
  • · agar kerak bo'lsa, tasvirni tahrirlash dasturida oching;

10-rasm - Dastur oynasi boshlanishidan oldin

Loyiha yaratish:

  • 1. Dastur fayllari uchun papka yarating va Delphi integratsiyalashgan ishlab chiqish muhitini ishga tushiring.
  • 2. Shaklga komponentlar qo'shing:

Birinchidan, biz ishlashimiz kerak bo'lgan asosiy komponent bo'lgan shaklga Image komponentini joylashtiramiz. Bunga qo'shimcha ravishda bizga quyidagi komponentlar kerak bo'ladi:

  • · ScrollBox To'liq o'lchamli rejimda tasvir Tasvirdan tashqariga chiqsa kerak bo'ladi. Biz uning Aling xossasiga alClient qiymatini belgilaymiz, shunda uning o'lchamlari oyna o'lchamiga mutanosib ravishda o'zgaradi. Va unga Image komponentini joylashtiring;
  • · Shuningdek, tasvirlarni saqlash va ochish uchun mo'ljallangan SavePictureDialog va OpenPictureDialog dialog komponentlarini qo'shamiz. Bizga birinchisi tasvirni tanlangan katalogga nusxalash uchun kerak, ikkinchisi - ochilish dialogini chaqirish uchun grafik fayl. Ular Komponentlar palitrasining Dialoglar sahifasida joylashgan. Ushbu sahifadan bizga PrintDialog komponenti ham kerak bo'lib, biz chop etish uchun printerni tanlash uchun dialog oynasini chaqirishimiz kerak.
  • · Dasturga asosiy menyu qo'shish uchun MainMenu va yanada rang-barang dizayn uchun XPManifest qo'shing
  • · Ishchi katalogda joylashgan tasvirlarning nomlarini ham biror joyda saqlashimiz kerak. ListBox komponenti bu maqsadlar uchun qulay, uni Form1 ning Create hodisasini qayta ishlashda yashirish mumkin.
  • · Navigatsiya tugmachalarini joylashtirish va ular bilan qulay ishlash uchun Parda panelini qo‘shamiz, unga ushbu tugmalarni joylashtiramiz (Oldingi rasm, Keyingi rasm, Haqiqiy o‘lcham, O‘lchamga moslash, O‘chirish, Nusxalash, Chop etish, Tahrirlash). SpeedButton ular uchun komponent sifatida tanlangan.
  • · “Chap” (oldingi rasm), “O‘ng” (keyingi rasm) va “Del” (tasvirni o‘chirish) tugmachalarini bosish uchun taymer qo‘shing.
  • · Va yana bir komponent - ProgressBar, u katta *.Jpg fayllarni yuklash jarayonini aks ettiradi.
  • 3. Tugmani bosish hodisasini qayta ishlash kodini yozing (Oldingi rasm, Keyingi rasm, Haqiqiy o'lcham, O'lchamga moslash, O'chirish, Nusxalash, Chop etish, Tahrirlash). Asosiy menyu menyu bandlarini bosish hodisasini qayta ishlash uchun kod yozing (Chiqish, Ochish, Yopish, Yaratish).
  • 4. Shaklni yaratish uchun dastlabki sozlamalarni o'rnating. Shakldagi bo'sh joyga ikki marta bosing va kodni yozing protseduralar tartibi TForm1.FormCreate(Sender:TObject), 1-ilovadagi modul kodiga qarang.
  • 5. Quyidagi turdagi protseduralarni yozing:

protsedura FindFileInFolder(yo'l, ext: string);

Ushbu protsedura tashqi niqob yordamida fayllar uchun yo'l papkasini skanerlaydi.

Dastur moduli kodining to'liq ro'yxati 1-ilovada (Dastur ro'yxati 3) joylashgan.

  • 1. Image komponentining imkoniyatlarini sanab o‘ting.
  • 2. Image komponentasi qaysi sinfning obyekti hisoblanadi?
  • 3. 3. Image komponentasi sukut bo‘yicha qanday fayl turini qo‘llab-quvvatlaydi?
  • 4. 4. Image komponentining asosiy xossalarini sanab bering.
  • 5. 5. Image komponentining tasviri qanday xossada saqlanadi?

LABORATORIYA ISHI

MAVZU: « Grafika ichidaDelphi- eng oddiy qurilish
geometrik shakllar"

Nazariyadan qisqacha ma'lumot

Delphi dasturchiga grafiklarni ko'rsatishning uchta usulini taqdim etadi:

    dastur ishlayotgan vaqtda chizma tuzish

    oldindan yaratilgan grafikalardan foydalanish

    grafik komponentlar yordamida tasvirlarni yaratish

Grafiklarni qurish uchun chizmachilik asboblari va usullarini ta'minlovchi maxsus sinflar yaratilgan: asboblar uchta sinfda tasvirlangan - Tfont, Tpen, Tbrush; Chizish maydoni va usullari Tcanvas sinfi tomonidan taqdim etiladi.

SinfTshrift– tuvalda matnni aks ettirish uchun foydalaniladigan shriftning xususiyatlarini belgilaydi. Sinfning xususiyatlari "Ko'pgina komponentlar uchun mavjud bo'lgan asosiy xususiyatlar" bo'limida tavsiflangan.

SinfTpen– chiziqlar chizilgan qalam (qalam) xususiyatlarini belgilaydi.

Xususiyatlari sinf Tpen:

Rang:Tcolor – chiziq rangi (standart – qora)

Kengligi:integer – pikseldagi chiziq qalinligi;

Uslub = (psSolid, psDash, psDot, psdashDot, psClear) – chiziq uslubini belgilaydi (qattiq, chiziqli, nuqtali, tire nuqtali, ko‘rinmas)

SinfCho'tkasi– tasvir sirtini bo‘yaydigan cho‘tkaning xususiyatlarini o‘rnatadi.

Xususiyatlari sinf Cho'tkasi:

Rang:Tcolor - cho'tka rangi (standart - oq)

Uslub– cho‘tka namunasi quyidagi qiymatlarni qabul qilishi mumkin:

BsSolid - qattiq rang berish

BsClear - soyaning yo'qligi

BsVertical - vertikal chiziqlar

BsBdiagonal - o'ng diagonal chiziqlar

BsDiagCross - qiya hujayra

BsGorizontal - gorizontal chiziqlar

BsFdiagonal - chap diagonal chiziqlar

BsCross - qafas

SinfTcanvas– yaratilgan tasvir qaysi sirtda joylashganligini va tasvirni yaratish vositalarini aniqlaydi: shrift, qalam, cho‘tka.

Odatiy bo'lib, shaklning butun mijoz maydoni ish maydoni (tuval) sifatida ishlatiladi (sarlavhasiz, asosiy menyusiz va shaklning aylantirish satrlarisiz), lekin siz komponentlar yordamida forma ichida kichikroq ish joylarini ajratishingiz mumkin. PaintBox yoki Rasm. Tuval koordinatasining kelib chiqishi ish maydonining yuqori chap burchagidir, ish maydonining kengligi xususiyat bilan belgilanadi. ClientWidth, balandligi – mulk ClientHeight.

Xususiyatlari sinf Tcanvas:

Tuval:Tcanvas – chizma maydonini belgilaydi

Cho'tkasi:Tbrush - yopiq shakllarni bo'yash uchun cho'tka

Shrift:Tfont - tuvaldagi matnni ko'rsatish uchun shrift

Qalam:Tpen – chizish uchun qalam (qalam).

PenPos: Nuqta - joriy pozitsiya tuvaldagi ko'rinmas kursor

Izoh : Tpoint turi - quyidagicha aniqlanadi:

Nuqta yozing = rekord

Piksellar: Tcolor - tuval piksellarining ranglarini, X, Y - piksel koordinatalarini o'rnatadi. Piksellar xususiyati tanlangan rang nuqtalaridan foydalangan holda grafiklarni chizish uchun foydalanish uchun qulay.

TCanvas sinfining asosiy usullari

    tartib MoveTo(x,y:integer); - ruchkani chiziq chizmasdan koordinatalari (x, y) nuqtaga olib boradi.

    Jarayon LineTo(x,y:integer); - joriy nuqtadan (x, y) koordinatali nuqtaga chiziq chizadi.

Misol : Shaklning yuqori chap burchagidan pastki o'ng burchagiga diagonal ko'k chiziq chizing.

Pen.color:= clblue;

MoveTo(0,0); LineTo(ClientWidth, ClientHeight);

    tartib To'rtburchak(x1,y1,x2,y2:integer); - to'rtburchak chizadi: x1,y1 – yuqori chap burchak koordinatalari; x2, y2 - pastki o'ng burchakning koordinatalari.

Misol : Shaklning o'rtasida tomoni 60 piksel bo'lgan sariq soyali kvadrat chizing.

var Xc,Yc: butun son; //

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.color:=clyellow;

Canvas.rectangle(xc-30,Yc-30,xc+30,Yc+30);

    tartib Ellips(x1,y1,x2,y2:integer); - koordinatalari ko'rsatilgan to'rtburchak ichiga chizilgan ellipsni chizadi.

Misol : PaintBox komponentasiga yozilgan ellipsni chizish.

PaintBox1.Canvas.Pen.Width:=4; //chiziq kengligi = 4 piksel

PaintBox1.Canvas.Ellipse(0,0, PaintBox1. ClientWidth, PaintBox1. ClientHeight);

    tartib Poligon(); - koordinatalar massivi bilan belgilangan yopiq ko'pburchakni chizadi.

Misol : shaklning yon tomonlarining o'rta nuqtalarini bog'laydigan to'ldirilgan olmosni chizish

Var Xc,Yc:integer; // shaklning mijoz hududi markazining koordinatalari

Xc:=ClientWidth div 2;

Xy:=ClientHeight div 2;

Canvas.Brush.Color:=Rgb(275,140,70); // apelsin rang soya qilish

Canvas.Polygon();

oxiri;

    Jarayon yoy(x1,y1,x2,y2,x3,y3,x4,y4:integer); - to'rtburchak (x1, y1, x2, y2) bilan chegaralangan ellips yoyini ko'rsatadi. Yoy koordinatali (x3,y3) nuqtadan (x4,y4) koordinatali nuqtagacha ko'rsatiladi. qarshi soat yo'nalishi bo'yicha.

Misol : komponentning yuqori tomonining o'rtasini bog'laydigan ellips yoyini chizish
PaintBox o'ng tomonining o'rtasi bilan.

Protsedura Tform1.Button1Click(Sender:Tobject);

Var X3,y3,x4,y4: Butun son;

PaintBox1 bilan bajaring

Canvas.Pen.Color:= clWhite;

Canvas.Pen.Width:= 3;

Canvas.rectangle(0, 0, PaintBox1.ClientWidth, PaintBox1.ClientHeight);

X3:= ClientWidth div 2;

X4:= ClientWidth;

Y4:= ClientHeight div 2;

Canvas.Pen.Color:= clMaroon;

Canvas.ARC(0, 0, PaintBox1.ClientWidth, PaintBox1.ClientHeight, x3, y3, x4, y4);

Oxiri;

    tartib Akkord(x1,y1,x2,y2,x3,y3,x4,y4:integer); - akkord chizadi - ellipsning 2 nuqtasini tutashtiruvchi to'g'ri chiziq: koordinatalari (x3, y3) nuqta bilan (x4, y4).

Misol : ARC usuli uchun berilgan misoldagi Chord usulini almashtiring va quyidagi natijani oling.

    tartib Pirog(x1,y1,x2,y2,x3,y3,x4,y4:integer); - ellips markazini (x3,y3) va (x4,y4) koordinatalari bilan tutashtiruvchi ellips segmentini chizadi.

Misol : ARC usuli uchun berilgan misolda PIE usulini tasavvur qiling va shu natijani oling.

    tartib TextOut(x,y:integer;Matn:string); - Matn parametrida uzatilgan satrni yuqori chap burchagi ko'rsatilgan to'rtburchakga chiqaradi x,y koordinatalari. Shrift xarakteristikalari Shrift vositasi yordamida o'rnatiladi.

Misol : shaklning pastki qismiga chizilgan grafik nomini yozing.

Canvas.Font.Height:=20 ; //belgi balandligi 20 piksel

Canvas.Font.Color:=clblue;

Canvas.TextOut(10, ClientHeight-24, ‘SIN(X) funksiya grafigi’);

Grafik komponentlar

Delphi sizga takomillashtirish imkonini beruvchi bir qancha tayyor komponentlarni taklif etadi foydalanuvchi interfeysi. Ushbu komponentlar sahifada joylashgan Qo'shimcha Va Tizim komponentlar palitralari.

KomponentRasm(SinfTasvir) – kengaytmali tashqi fayllarda saqlangan grafik tasvirlarni ko‘rsatish uchun yaratilgan:

    Belgi (piktogramma, piktogramma);

    Bmp (bitmap, bitmap);

    Wmf, .emf (metafayl);

    Jpg, .jpeg (JPEG siqilgan tasvir).

Asosiy xususiyatlari :

Avtomatik o'lcham:boolean – rost ga o‘rnatilganda komponent o‘z o‘lchamlarini yuklangan tasvir hajmiga moslashtiradi; sukut bo'yicha noto'g'ri.

Stretch:boolean - agar rost bo'lsa, yuklangan qiymat komponentning butun maydonini egallaydi; sukut bo'yicha noto'g'ri.

Tuval:Tcanvas – dasturni bajarish jarayonida komponentning ichiga chizish uchun foydalaniladi.

Rasm:Tpicture - Komponentga joylashtirilgan tasvirni belgilaydi.

Asosiy usullari sinf Rasm:

Jarayon LoadFromFile(Fayl nomi: string); - Fayl nomi nomli fayldan komponentga tasvirni yuklaydi.

Jarayon SaveToFile(Fayl nomi: string); -komponentdagi tasvirni Filename nomli faylga saqlaydi.

KomponentPaintBox - to'rtburchaklar chizilgan maydonini belgilaydi. Asosiy mulk hisoblanadi Tuval, Tcanvas sinfining barcha usullari mavjud, u mustaqil xususiyatlarga ega emas.

Misol : keling, ellips chizamiz sariq rang, PaintBox1 komponentiga yozilgan.

Protsedura Tform1Button1Click(yuboruvchi:Mavzu);

PaintBox1.Canvas bilan bajaring

Brush.Color:=clyellow;

Ellipse (0,0, PaintBox1.ClientWidth, PaintBox1.ClientHeight);

oxiri;

KomponentBitBtn rastr tugmasi

BitBtn tugmasi, standart tugmadan farqli o'laroq, sarlavhaga qo'shimcha ravishda xususiyat tomonidan belgilangan tasvirni o'z ichiga olishi mumkin. Glif. Oldindan belgilangan xususiyatlarga ega (ma'lum bir rasm, yozuv va maqsadli) standart BitBtn tugmalari to'plami mavjud - standart tugma turi xususiyat orqali tanlanadi. Mehribon. Tur=(bkCustom, bkAbort,bkCancel, bkClose…)

Vazifa № 1

Asosiy shaklda ikkita Tasvir komponenti va 4 tugmachani ("Rasmni yuklash", "Geometrik figurani qurish", "Rangni o'zgartirish", "Chiqish") o'z ichiga olgan dastur yarating va quyidagilarga imkon beradi:

a) foydalanuvchi tanlagan grafik tasvirni Image1 komponentiga yuklang, shunda tasvir Image komponentining butun maydonini egallaydi.

b) Image1 komponenti ostida “Bu fayldan olingan rasm.

(komponentning o'lchami va holatini har qanday o'lchash uchunRasm1 ta yozuv bo'lishi kerak
qat'iy komponent ostida joylashgan).

c) Image2 komponentining ichiga geometrik figurani chizish: Image komponentining o'rtasini Image komponentining pastki va o'ng tomonlari o'rtalari bilan bog'laydigan to'ldirilgan ellips segmenti.

(komponentning o'lchami va holatidagi har qanday o'zgarish uchunRasm2 raqam to'g'ri tuzilishi kerak, ya'ni. komponentga tegishli spetsifikatsiyaga muvofiqRasm2)

d) ColorDialog komponentasi yordamida foydalanuvchining iltimosiga ko'ra Image2 da chizilgan rasm chizig'ining rangini o'zgartirish.

Vazifa № 2

Tasvir komponentida tasodifiy bir nechta teglarni (masalan, “Hurray!” so‘zi) joylashtirish imkonini beruvchi dastur yarating. Amalga oshirish uchun generatordan foydalaning tasodifiy raqamlar Randomize va Random funksiyasi.

Tasvir komponentining o'lchamlari, Rasmda ko'rsatilgan so'z va so'zlar soni foydalanuvchi tomonidan kiritilishi kerak.

Vazifa № 3

ListBox dan geometrik shakl nomini tanlash va Image komponentida tanlangan shaklni chizish imkonini beruvchi dastur yarating. Shaklning rangi RadioGroup komponentidan tanlanadi.

Vazifa № 4

PaintBox1 komponentini 4 ta teng qismga ajrating, har bir qismini boshqa rangga bo'yang, masalan: ko'k, sariq, yashil, qizil.

PaintBox1 ning har bir burchagi yoniga shu burchakning koordinatalarini yozing (PaintBox1 komponenti joylashgan shaklning kelib chiqishiga nisbatan).

Vazifa № 5

BILAN

Radiogroup1 komponentidan chiziladigan shakl turini, Radiogroup2 komponentidan to'ldirish rangini tanlang va Image komponentida tanlangan shaklni chizing.

Vazifa № 6

Foydalanuvchiga PaintBox1 komponentining o'lchamlarini (piksellarda) o'rnatish imkonini beruvchi dastur yarating.

PaintBox1 komponentini 2 ta teng qismga bo'ling, har bir qismning ichiga ColorDialog-da foydalanuvchi tanlagan rang bilan to'ldirilgan ellips chizing.

Vazifa № 7

BILAN Quyidagilarga imkon beruvchi ilova yarating:

ListBox-dan geometrik shakl nomini tanlang va tanlangan shaklni Image komponentida chizing. Shakl, agar RadioGroup komponentida Ha tanlangan bo'lsa, ColorDialog komponentida foydalanuvchi tanlagan rang bilan to'ldirilishi kerak.

Vazifa № 8

Foydalanuvchiga PaintBox1 komponentining o'lchamlarini (piksellarda) o'rnatish imkonini beruvchi dastur yarating.

PaintBox1 komponentini 4 ta teng qismga bo'ling, har bir qismning ichiga turli xil geometrik shakl (ellips, romb, uchburchak va to'rtburchak) chizing. Har bir shaklning rangi foydalanuvchi tomonidan ColorGrid-da tanlanadi.

Vazifa № 9

ListBox dan geometrik shakl nomini tanlang
shakllar (ellips, romb, to'rtburchak) va chizish
Image komponentida tanlangan shakl. Manzil
Tasvir komponentidagi shakllar (I chorak, II chorak,

III yoki IV chorak) va rasmning rangi tanlanadi
RadioGroup komponentlaridan.

Vazifa № 10

Foydalanuvchiga PaintBox1 komponentining o'lchamlarini (piksellarda) o'rnatish imkonini beruvchi dastur yarating.

Yon o'lcham matn bo'lmasligi, manfiy raqam bo'lmasligi va kichikroq shakl hajmidan oshmasligini ta'minlang.

PaintBox1 komponentini 4 ta teng qismga bo'ling, har bir qismning ichiga foydalanuvchi tomonidan Comboboxda tanlagan geometrik shaklni (ellips, romb, uchburchak va to'rtburchak) chizing. Rasmning rangi foydalanuvchi tomonidan ColorBox-da tanlanadi.

Vazifa № 11

Quyidagilarga imkon beruvchi ilova yarating:

Radiogroup komponentidan chizilgan joyni tanlang

to'g'ri burchakli uchburchakning Image komponentida, o'rnating
figuraning soyasining rangi yoki kontur rangiga qarab
Checkbox tugmachalarini yoqish. orqali rangni tanlang
ColorGrid komponenti.

Vazifa № 12

Foydalanuvchiga PaintBox1 komponentining o'lchamlarini (piksellarda) o'rnatish imkonini beruvchi dastur yarating.

Yon o'lcham matn bo'lmasligi, manfiy raqam bo'lmasligi va kichikroq shakl hajmidan oshmasligini ta'minlang.

PaintBox1 komponentini 2 ta teng qismga ajrating, qismlardan birining ichiga foydalanuvchi tomonidan Combobox-da tanlagan geometrik shakl (ellips, romb, uchburchak va to'rtburchak) chiziladi. Rasmning rangi foydalanuvchi tomonidan ColorBox-da tanlanadi.

Masalan, siz shakl rangini quyidagicha o'zgartirishingiz mumkin:

form1.Color:= ColorBox1.Colors;

Vazifa № 13

Quyidagilarga imkon beruvchi ilova yarating:

a) shaklning o'rtasiga kvadrat chizish (kvadrat tomonining o'lchami foydalanuvchi tomonidan kiritiladi). Yon o'lcham matn bo'lmasligi, manfiy raqam bo'lmasligi va kichikroq shakl hajmidan oshmasligini ta'minlang.

b) Checkbox tugmachalarining kiritilishiga qarab kvadratni bitta yoki ikkita diagonalga bo'ling va har bir uchburchakni boshqa rangga bo'yang. Rang tanlash foydalanuvchi tomonidan amalga oshiriladi.

Vazifa № 14

Foydalanuvchiga PaintBox1 komponentining o'lchamlarini (piksellarda) o'rnatish imkonini beruvchi dastur yarating.

Yon o'lcham matn bo'lmasligi, manfiy raqam bo'lmasligi va kichikroq shakl hajmidan oshmasligini ta'minlang.

PaintBox1 komponentini 2 ta teng qismga ajrating, bir qismining ichiga romb, ikkinchi qismining ichiga esa istalgan uchburchak chiziladi. Rasmning rangi foydalanuvchi tomonidan ColorBox-da tanlanadi.

Masalan, siz shakl rangini quyidagicha o'zgartirishingiz mumkin:

form1.Color:= ColorBox1.Colors;

Vazifa № 15

Quyidagilarga imkon beruvchi ilova yarating:

a) Image komponentining o‘lchamlarini gorizontal va vertikal ravishda foydalanuvchi klaviaturadan kiritgan raqam bilan bir xil va teng qilib belgilash;

(yon oʻlchami matn boʻlmasligi, manfiy raqam boʻlmasligi va kichikroq shakl hajmidan oshmasligi sharti bilan)

b) Image komponentini ikkita ko'k chiziqli 4 ta teng kvadratga bo'ling;

c) har bir hosil bo'lgan kvadrat ichida unga yozilgan doira chizing (foydalanuvchiga rang tanlash dialog oynasi orqali doiralar rangini tanlashga ruxsat bering).

Vazifa № 16

Foydalanuvchiga PaintBox1 komponentining o'lchamlarini (piksellarda) o'rnatish imkonini beruvchi dastur yarating.

Yon o'lcham matn bo'lmasligi, manfiy raqam bo'lmasligi va kichikroq shakl hajmidan oshmasligini ta'minlang.

PaintBox1 komponentini 9 ta teng qismga bo'ling va hosil bo'lgan har bir shaxmat to'rtburchaklarini bo'yang. To'ldirish rangi foydalanuvchi tomonidan ColorBox-da tanlanadi.

Masalan, siz shakl rangini quyidagicha o'zgartirishingiz mumkin:

form1.Color:= ColorBox1.Colors;

Vazifa № 17

Shaklda ikkita Tasvir komponenti va to'rtta tugmani joylashtiring: Chiziq rangi, To'ldirish rangi, Ok va Chiqish; va Edit komponenti.

OK tugmasini bosganingizda Rasm1da tomoni X bo'lgan kvadrat, Rasm2da esa har birining uzunligi X bo'lgan oyoqlari teng bo'lgan to'g'ri burchakli uchburchak chiziladi.

Uchburchakning tepasi Image2 ning kelib chiqishi bilan mos keladi. Kvadratning cho'qqilaridan biri Image1 ning kelib chiqishiga to'g'ri keladi.

OK tugmasi faqat siz shaklni chizish uchun chiziq rangi va to'ldirish rangini tanlaganingizda mavjud bo'ladi.

X - Random funksiyasi yordamida tasodifiy tanlaydi va X qiymati Edit komponentida ko'rsatilishi kerak.

Vazifa № 18

Foydalanuvchiga PaintBox1 komponentining o'lchamlarini (piksellarda) o'rnatish imkonini beruvchi dastur yarating.

PaintBox1 komponentini 4 ta teng qismga bo'ling; foydalanuvchi tanlagan qism ichida to'ldirilgan doirani qurish kerak, uning o'lchami foydalanuvchi tomonidan o'rnatiladi. Foydalanuvchi ColorBox-da to'ldirish rangini tanlaydi.

Masalan, siz shakl rangini quyidagicha o'zgartirishingiz mumkin:

form1.Color:= ColorBox1.Colors;

Grafik ma'lumotni ko'rsatish uchun Delphi kutubxonasi komponentlarni taqdim etadi, ularning ro'yxati jadvalda keltirilgan. 6.

6-jadval

Grafik ma'lumotlarni ko'rsatish uchun komponentlar

Komponent Sahifa Tavsif
Rasm Qo'shimcha Grafiklarni ko'rsatish uchun ishlatiladi
PaintBox (chizish uchun oyna) Tizim Shaklda chizishingiz mumkin bo'lgan ba'zi maydonlarni yaratish uchun foydalaniladi
DrawGrid (chizmalar jadvali) Qo'shimcha Matn bo'lmagan ma'lumotlarni satr va ustunlarda ko'rsatish uchun foydalaniladi
Diagramma (diagramma va grafiklar) Qo'shimcha Komponent TeeChart komponentlar oilasiga tegishli bo'lib, ular diagrammalar va grafiklarni yaratish uchun ishlatiladi
Chartfx (diagrammalar va grafiklar) ActiveX Grafik va grafik muharriri
FIBook (Excel sahifalari) ActiveX Raqamli axborotni kiritish va qayta ishlash komponenti
VtChart (diagrammalar) ActiveX Diagramma oynasi

Bundan tashqari, xususiyatga ega bo'lgan har qanday oyna komponentining yuzasida grafik ma'lumotlarni ko'rsatishingiz va kiritishingiz mumkin Tuval- kanvas.

Rasm jadvallari - DrawGrid va StringGrid komponentlari

Komponent DrawGrid ilovada grafik tasvirlarni o'z ichiga olishi mumkin bo'lgan jadval yaratish uchun ishlatiladi. Ushbu komponent komponentga o'xshaydi StringGrid chunki ikkinchisi dan olingan DrawGrid. Shuning uchun ichida DrawGrid komponentning barcha xossalari, usullari, hodisalari mavjud StringGrid matn bilan bog'liq bo'lganlar bundan mustasno, ya'ni. mulklardan tashqari Hujayralar, Cols, satrlar, ob'ektlar. Shu nuqtai nazardan, komponent StringGrid nisbatan ancha katta imkoniyatlarga ega DrawGrid chunki u ham tasvirlarni, ham matnlarni hujayralarda saqlashi mumkin. Va agar siz ba'zi hujayralarga matn kiritmoqchi bo'lsangiz DrawGrid keyin buning uchun matnni konturda ko'rsatish usullaridan foydalanishingiz kerak bo'ladi, bu juda qulay emas.

Komponentlar DrawGrid va StringGrid konturga ega Kanvas, unda siz rasmlarni joylashtirishingiz mumkin.

Usul bor Hujayra to'g'ri, ma'lum bir hujayra uchun ajratilgan tuval maydonini qaytaradi. Bu usul quyidagicha aniqlanadi

funksiyasi CellRect(ACol, ARow: Longint): TRect;

Qayerda ACol va ARow- 0 dan boshlanadigan ustun va satr indekslari, ularning kesishmasida katakcha joylashgan. Ushbu funktsiya tomonidan qaytarilgan maydon kerakli tasvirni chizish mumkin bo'lgan tuval maydonidir. Masalan, operator

DrawGridl.Canvas.CopyRect(DrawGridl.CellRect(1,1),

BitMap.Canvas,Rect(0,0,BitMap.Height,BitMap.Width));

nusxa ko'chirish usuli CopyRect jadvalning (1,1) kataklariga DrawGridl komponentdan olingan rasm BitMap. Bu katak jadvalda chapdan ikkinchi va yuqoridan ikkinchi o'rinda turadi, chunki indekslar 0 dan boshlanadi. E'tibor bering, agar katak nusxa olingan rasmning o'lchamidan kichik bo'lsa, katakchada faqat chap qismi paydo bo'ladi. yuqori qismi Rasmlar.

Komponent tuvalidagi rasm DrawGrid va StringGrid, har qanday komponentning tuvalidagi kabi, dastur oynasi boshqa oynalar bilan qoplangan bo'lsa yoki, masalan, ilova minimallashtirilganda o'chiriladi.

Qulay usulda hujayralarga rasmlar qo'shish DrawGrid hodisa ishlov beruvchisidan foydalanishdir OnDrawCell. Bu hodisalar har bir jadval katakchasi uchun qayta chizilgan vaqtda sodir bo'ladi. Ishlovchi sarlavhasi quyidagicha ko'rinadi:

protsedurasi TForml.DrawGridlDrawCell(Sender: TObject;

ACol, ARow: butun son; Rect: TRect; Shtat: TGridDrawState)

Parametr Davlat hujayra holatini bildiradi. Bu quyidagi elementlarni o'z ichiga olishi mumkin bo'lgan to'plam: gdSelected- tanlangan katak, gdFocused- diqqat markazida bo'lgan hujayra, gdFixed- stolning belgilangan maydonidagi hujayra. Parametr Davlat turli holatlarda hujayralarni turlicha ko'rsatish uchun ishlatilishi mumkin.

Shakl komponenti

Shakl komponenti faqat shartli ravishda grafik ma'lumotni ko'rsatish vositasi sifatida tasniflanishi mumkin, chunki u turli xil geometrik shakllarni ifodalaydi, mos ravishda soyalanadi. Ushbu komponentning asosiy xususiyati Shakl(shakl), u quyidagi qiymatlarni qabul qilishi mumkin:

StRectangle - to'rtburchak;

StSquare - kvadrat;

StRoundRect - burchaklari yumaloq bo'lgan to'rtburchaklar;

StRouhdSquare - yumaloq burchakli kvadrat;

Stellips – ellips;

StCircle - aylana.

Komponentning yana bir muhim xususiyati Cho'tkasi(cho'tka). Bu xususiyat turdagi ob'ekt hisoblanadi sil kasalligi, bir qator kichik xususiyatlarga ega, xususan, rang (Brush.Color) va uslub (Brush.Style) raqamni to'ldirish. Ba'zi Style qiymatlari uchun to'ldirishni rasmda ko'rishingiz mumkin. 3.2. Komponentning uchinchi o'ziga xos xususiyati Shakl- Qalam(qalam) chiziq uslubini belgilaydi.

Diagramma komponenti

Endi komponentni ko'rib chiqaylik Diagramma. Ushbu komponent sizga juda ta'sirli ko'rinadigan turli xil diagrammalar va grafiklarni yaratishga imkon beradi. Komponent Grafik ko'p xossalari, usullari, hodisalari bor, shuning uchun agar ularning barchasini ko'rib chiqsak, bunga butun bir bobni bag'ishlashimiz kerak bo'ladi. Shuning uchun biz faqat asosiy xususiyatlarni hisobga olish bilan cheklanamiz Diagramma. Qolganini Delphi-ning o'rnatilgan yordamida topishingiz mumkin yoki shunchaki diagrammalar bilan tajriba o'tkazish orqali ularni sinab ko'ring.

Komponent Grafik ob'ektlarning konteyneridir Seriya- sinf merosxo'rlari TChartSeries. Har bir bunday ob'ekt ma'lum bir ko'rsatish uslubi bilan tavsiflangan bir qator ma'lumotlarni ifodalaydi: ma'lum bir grafik yoki diagramma. Har bir komponent Grafik bir nechta epizodlarni o'z ichiga olishi mumkin. Agar siz grafikni ko'rsatmoqchi bo'lsangiz, unda har bir seriya grafikdagi bitta egri chiziqqa mos keladi. Agar siz diagrammalarni ko'rsatmoqchi bo'lsangiz, ba'zi diagrammalar uchun bir nechta turli seriyalarni bir-birining ustiga qo'yishingiz mumkin, boshqalari uchun (masalan, doiraviy diagrammalar) u xunuk ko'rinishi mumkin. Biroq, bu holatda ham, siz bitta komponent uchun sozlashingiz mumkin Grafik bilan bir xil ma'lumotlarning bir nechta seriyasi turli xil turlari diagrammalar. Keyin, har safar ulardan birini faollashtirish orqali siz foydalanuvchiga o'zi qiziqqan ma'lumotlarni aks ettiruvchi diagramma turini tanlash imkoniyatini berishingiz mumkin.

Bir yoki ikkita komponentni joylashtiring Grafik shaklda va Ob'ekt inspektorida ochiladigan xususiyatlarga qarang. Quyida ulardan ba'zilarining tushuntirishlari keltirilgan.

AllowPanning - sichqonchaning o'ng tugmachasini bosish orqali foydalanuvchining bajarilish vaqtida grafikning kuzatilgan qismini aylantirish qobiliyatini aniqlaydi. Mumkin bo'lgan qiymatlar: pmNone - aylantirish taqiqlangan, pmHori/ontal, pm Vertical yoki pmBoth - mos ravishda faqat gorizontal yo'nalishda, faqat vertikal yo'nalishda yoki ikkala yo'nalishda aylantirishga ruxsat beriladi.

AhowZoom - foydalanuvchiga diagramma yoki grafik qismlarini sichqoncha kursori bilan kesish orqali ish vaqtida tasvirning masshtabini o'zgartirish imkonini beradi. Agar fragmentning ramkasi o'ngga va pastga chizilgan bo'lsa, u holda bu fragment grafikning butun maydonini qoplash uchun cho'ziladi. Va agar ramka yuqoriga va chapga chizilgan bo'lsa, unda asl o'lchov tiklanadi.

Sarlavha - diagramma sarlavhasini belgilaydi.

Oyoq - diagramma ostidagi sarlavhani belgilaydi. Sukut bo'yicha yo'q. Imzo matni Text sub xususiyati bilan aniqlanadi.

Frame - diagramma atrofidagi ramkani belgilaydi.

Ob'ektlar inspektoridagi ko'plab sanab o'tilgan xususiyatlar yonida diagramma muharririning u yoki bu sahifasiga qo'ng'iroq qilish imkonini beruvchi ellipsli tugmalar mavjud - bu diagrammalarning barcha xususiyatlarini o'rnatish imkonini beruvchi ko'p sahifali oyna. Diagramma muharriri komponentni ikki marta bosish orqali ham chaqirilishi mumkin Grafik yoki ustiga bosing o'ng tugmasini bosing sichqonchani bosing va ochilgan menyudan Diagrammani tahrirlash buyrug'ini tanlang.

Yuqori komponentni ikki marta bosing Diagramma. Siz bir nechta yorliqlarga ega Diagramma sahifasida Diagramma muharriri oynasiga o'tasiz. Avvalo, undagi Series yorlig'i sizni qiziqtiradi. Qo'shish tugmasini bosing - qator qo'shing. Siz diagramma yoki grafik turini tanlashingiz mumkin bo'lgan oynaga o'tasiz. IN Ushbu holatda Pie - doira diagrammasini tanlang. Sarlavhalar yorlig'idan foydalanib, siz diagramma sarlavhasini o'rnatishingiz mumkin, Legend yorlig'i diagramma afsonasini (belgilar ro'yxati) ko'rsatish uchun parametrlarni o'rnatish yoki uni butunlay ekrandan olib tashlash imkonini beradi, Panel yorlig'i panelning ko'rinishini aniqlaydi. qaysi diagramma ko'rsatilgan bo'lsa, 3D yorlig'i sizga diagramma ko'rinishini o'zgartirish imkoniyatini beradi: egilish, siljish, qalinlik va boshqalar.

Diagramma muharririda ishlayotganingizda va diagramma turini tanlaganingizda, komponentlar Grafik Sizning formangiz o'z ko'rinishini unga kiritilgan shartli ma'lumotlar bilan ko'rsatadi. Shuning uchun, arizangizga turli xil variantlarni qo'llash natijasini darhol ko'rishingiz mumkin, bu juda qulay.

Bir qator yorliqlarga ega bo'lgan Series sahifasi sizga tanlash imkoniyatini beradi qo'shimcha xususiyatlar seriyali displey. Xususan, dumaloq diagramma uchun Format yorlig'ida "Circled Pie" opsiyasini yoqish foydali bo'lib, bu diagramma Chart komponentining istalgan o'lchamida doira shaklida ko'rsatilishini ta'minlaydi. Belgilar yorlig'ida Uslublar guruhining tugmalari diagrammaning alohida segmentlariga tegishli teglarda nima yozilishini aniqlaydi: Qiymat - qiymat, Foiz - foizlar, Yorliq - ma'lumotlar nomlari va boshqalar.

Siz ixtiyoriy ravishda Diagramma sahifasining Series yorlig'idagi Klonlash tugmasini bosish orqali ushbu diagramma komponentiga boshqa bir xil qatorni qo'shishingiz mumkin, so'ngra ushbu yangi seriya uchun O'zgartirish tugmasini bosish va boshqa diagramma turini tanlash, masalan, Bar.

Diagramma muharriridan chiqing, ilovangizning pastki Diagramma komponentini tanlang va Grafik muharriri yordamida uning xususiyatlarini oʻrnatishni takrorlang. Bunday holda, agar siz grafikda ikkita egri chiziqni ko'rsatishni xohlasangiz, ikkita seriyani ko'rsatishingiz va Chiziqli diagramma turini tanlashingiz kerak bo'ladi. Chunki haqida gapiramiz Grafiklar haqida o'qlar va grafikning uch o'lchovli qirralarining koordinata xususiyatlarini belgilash uchun "O'q" va "Devorlar" yorliqlaridan foydalanishingiz mumkin.

Bu dizayn uchun ko'rinish ariza tugaydi. Siz ko'rsatmoqchi bo'lgan ma'lumotlarni belgilaydigan kodni yozish qoladi. Sinov dasturi uchun dumaloq diagrammada faqat bir nechta doimiy ma'lumotlarni va grafiklarda ba'zi funktsiyalarni o'rnatamiz.

Ko'rsatilgan qiymatlarni o'rnatish uchun siz Series usullaridan foydalanishingiz kerak. Keling, faqat uchta asosiy usulga to'xtalib o'tamiz.

Usul Toza avval kiritilgan bir qator ma'lumotlarni tozalaydi.

Usul Qo'shish:

Qo'shish (Const AValue: Double; Const ALabel: String; AColor: TColor) ,

diagrammaga yangi nuqta qo'shish imkonini beradi. Parametr AV qiymat qo'shilgan qiymatga, parametrga mos keladi ALabel- diagrammada va afsonada ko'rsatiladigan yorliq, AColor- rang. Parametr ALabel- ixtiyoriy, bo'sh belgilanishi mumkin: ''. Usul AddXY:

AddXY(Const AXValue, AYValue: Double; Const ALabel: String; AColor: TColor)

funksiya grafigiga yangi nuqta qo‘shish imkonini beradi. Variantlar AXValue Va AYValue argument va funktsiyaga mos keladi. Variantlar ALabel va AColor usuli bilan bir xil Qo'shish.

Shunday qilib, bizning misolimizda ma'lumotlarni yuklash tartibi quyidagicha ko'rinishi mumkin:

const Al=155; A2=251; A3=203; A4=404; var i:word; boshlanishi

Series bilan boshlanadi

Qo'shish(Al,"Workshop l",clYellow);

Qo'shish(A2,"Workshop 2",clBlue);

Qo'shish(A3,"Workshop 3",clRed);

Qo'shish(A4,"Workshop 4",clPurple); oxiri;

Series2.Clear; SeriesS.Clear; i uchun:=0 dan 100 gacha boshlanadi

Series2.AddXY(0,02*Pi*i,sin(0,02*Pi*i)

SeriesS.AddXY(0,02*Pi*i,cos(0,02*Pi*i) oxiri;

ClRed); ,clBlue);

Operatorlar Toza Agar ilova ishlayotgan vaqtda ma'lumotlarni yangilamoqchi bo'lsangiz kerak bo'ladi.

Bu bizning komponentga kirishimizni yakunlaydi Diagramma. To'g'ri, biz uning imkoniyatlarining kichik qismini ko'rib chiqdik.


“Delphida grafik ma’lumotni ko’rsatish” Mavzuning mazmuni: 1.C S pppp ooooo ssss ooooo bbbb yyyy in in yyyy vvvv ooooo dddd aaaa yy g rrrrr aaaa ffff iii hhhh eee ssss kkffffnnr ooooooo tskst iiiiii iiiii iv in D D D D eeee llll pppp hhhh iiii O O tttt ooo bbbb rrrrr aaaa zhzhzh eee nnnn iiii eee k k k aaaa rrrrr tttt iiii nnnn ooooo kkkk O O tttbbnbr ooo iiii eee g g y g eee ooooo mmmm eee ttt rrrr iiii hhchh eee ssss kkkk iiii xxxxx ffff iiii yyyy uuuu rrrrr P Pooooo ssss ttt rrrrr ooooo eee nnnn iiii eee yy g g rrrrr aaaa ffff iiii kkk ooooo vvii dvvi dvvi va rrr aaaa mmmm mmmm....


1. Grafik ma'lumotlarni ko'rsatish usullari. Delphida grafik ma'lumotlarni aks ettirishning bir necha usullari mavjud: Oldindan tayyorlangan tasvirlarni chiqarish (Image, Shape komponentlari); P Grafik va diagrammalarni qurish (Chart komponenti va boshqalar); F Tasvirlash dasturiy jihatdan(Kanvas ob'ekti).


2.Display 2.Rasmlarni ko'rsatish. IMAGE komponentidan foydalangan holda rasmlarni namoyish qilish biz DDDD MChJda Iyy Yiyy va va ZZZZ DPRrrd DDDDDDDDDDDDDD IIII XXXX T T T T T T T T T T T T TOTEMM da ko'rib chiqdik .... Bu erda biz ko'rsatilgan tasvirni vaqti-vaqti bilan o'zgartirishda eng oddiy animatsiya misolini ko'rib chiqamiz. . PPPP eee rrrrr eee yyyytttoeee nnnn aaaaaaaaaaaaaaaaaaaaaaaaaa






3.Ko`rsatish 3.Geometrik shakllarni ko`rsatish. VA Shaklning bir nechta komponentlaridan siz oddiy chizmalar yaratishingiz mumkin. P Chizmadagi Shape komponentalarining joylashishini (.Chap,.Top), o'lchamini (.Ken,.Balandlik) va rangini (Brush.Color) dasturli o'zgartirish orqali siz eng oddiy animatsiya elementlarini amalga oshirishingiz mumkin. R R R R aaaa ssssssss mmmm ooooh tttt rrrrr eee tttt yee p p p p rrrrr iii mmmm eee rrrrr....


4.Qurilish 4.Grafik va diagrammalarni qurish. Diagrammalar raqamli ma'lumotlar massivlarini ko'proq vizual tasvirlash, ularni vizual ko'rsatish va tahlil qilish uchun mo'ljallangan. PPPP rrrrr iiii mmmm eee rrrrr.... Delphida diagrammalar yaratish uchun bir nechta komponentlar mavjud, ulardan biri Chart komponentidir (TeeChart Std bo'limi).










Grafiklar va diagrammalar. Ko'rsatilishi kerak bo'lgan ma'lumotlar odatda Grafikga dasturiy tarzda uzatiladi, masalan: Series1.Clear; (aniq qator) uchun i:=1 to N do Series1.addxy(i, A[i], clGreen); X o'qi qiymati Y o'qi qiymati X o'qi yorlig'i PP diagrammasidagi ma'lumotlar rangi aaaa ssssssssssss mmmm ooooo tttt rrrrr eee tttt yee p p p p prrrr iiii mmmm eee rrrrr p p poooo sssssssssssssssssssssss rrrrr aaaa ffff iii kkkk aaaa f f f f uuuu nnnn kkkk tsstst iiiiii y y y y = = = = S S S S iiii nnnn ((((xxxx))))


Oldingi: Laboratoriya ishi ““““ OOOO tttt ooooo bbbb rrrrr aaaa zhzhzh eee nnnn iiii eee k k k k aaaa rrrrr tttt iiii nnnn ooooo kkkk i i i yyyy eee ooooo mmmmmms eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee kkkk iiii xxxx ffff iiii yyyy uuuu rrrrr va va va va xxxx a a a a nnnn iiii mmmm aaaa tsstst iiii yayayaya """"...Vazifa: 1) Rasm komponentlarida ko'rsatilgan tasvirni vaqti-vaqti bilan o'zgartirib, oddiy animatsiyani bajarish uchun dastur ishlab chiqish. (Rasmlar soni kamida uchta, rasmlarni o'zingiz tanlang).




Keyingi: Laboratoriya ishi ““““ PPPP oooo ssss tttt rrrrr ooooo eee nnnn iiii eee yy g rrrrr aaaa ffff iiii kkkk ooooo vvvv i i i i d d iiiiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa” 1) M ilovani o'zgartirish dan laboratoriya ishi 9 (Ma'lumotlarni jadvalda ko'rsatish). Jadvaldagi ba'zi ma'lumotlarni gistogramma yoki doiraviy diagrammada ko'rsatish imkoniyatini qo'shing. 2) Berilgan funksiyaning grafigini tuzing.

Grafika bilan ishlash Delphida bu nafaqat chiziqlar va chizmalar, balki chop etish hamdir matnli hujjatlar. Shuning uchun ichida Delphi grafikalar bilan ishlaydi siz ozgina vaqt sarflashingiz kerak. Bilan ishlash Delphida grafika tuvalga kirishni o'z ichiga oladi - komponentlarning Canvas xususiyati. Kanvas Delphi Bu dasturchiga uning har bir nuqtasiga (piksellariga) kirishga imkon beruvchi tuvaldir va rassom kabi, talab qilinadigan narsalarni ko'rsatish. Albatta, uchun piksel piksel chizish grafikalar bilan ishlash Delphida kerak emas, Delphi tizimi kuchli ta'minlaydi grafik vositalari, dasturchining vazifasini osonlashtiradi.

Delphida grafikalar bilan ishlashda dasturchi o'z ixtiyorida konturga ega (kanvas, tuval - mulk). Tuval Delphi komponentlari), qalam (xususiyat Qalam), siz bo'yashingiz kerak bo'lgan komponent yoki ob'ektning cho'tkasi (Brush xususiyati). Qalamda Qalam va cho'tkalar Cho'tkasi rangni (Color xususiyati) va uslubni (Style xususiyati) o'zgartirishingiz mumkin. Shriftlarga kirish tuval xususiyati bilan ta'minlanadi Shrift. Ushbu vositalar sizga matematik va muhandislik mazmunining matn va juda murakkab grafiklarini, shuningdek chizmalarni ko'rsatishga imkon beradi. Bundan tashqari, grafikalar bilan ishlash Delphida bunday resurslardan foydalanish imkonini beradi Windows grafik va video fayllar kabi.

Albatta, Delphidagi barcha komponentlar ham bunday xususiyatlarga ega emas. Yorliqda Qo'shimcha maxsus komponent joylashgan TIME tasviri, ayniqsa, chizish uchun mo'ljallangan, balki mulk Tuval masalan, ListBox, ComboBox, StringGrid kabi komponentlarga, shuningdek, komponentlarimizni joylashtiradigan Formaning o'ziga ega! Bundan tashqari, hujjatlarni chop etish uchun Delphi printer kabi ob'ektning Canvas xususiyatiga kiradi.

Canvas Delphi kabi ob'ektning asosiy xususiyati hisoblanadi Piksellar turi TColor, ya'ni ularning rangi bilan belgilangan ikki o'lchovli nuqtalar (piksellar) massividir. Tuvalga rasm chizish tuvalning istalgan nuqtasiga ma'lum rangni belgilash paytida sodir bo'ladi. Har bir piksel uchun mavjud bo'lgan har qanday piksel tayinlanishi mumkin Windows rangi. Masalan, bayonotni bajarish

Image1.Canvas.Pixels:=clRed;

Natijada koordinatalar bilan qizil nuqta chiziladi. Siz piksel rangini teskari belgilash orqali bilib olishingiz mumkin:

Rang:=Image1.Canvas.Pixels;

Turi TColor uzun butun son (LongInt) sifatida aniqlanadi. Uning to'rt baytida ko'k (B), yashil (G) va qizil (R) ranglarning nisbati haqida ma'lumot mavjud. O'n oltilik tizimda Bu shunday ko'rinadi: $00BBGGRR. Har bir rangning nisbati 0 dan 255 gacha o'zgarishi mumkin. Shuning uchun maksimal qizil nuqtani ko'rsatish uchun uni belgilash kerak. rang $000000FF.
Delphida standart ranglar uchun matn konstantalari to'plami aniqlanadi. Buni, masalan, Ob'ektlar inspektoridagi bir xil formaning Rang xususiyatini ochish orqali ko'rishingiz mumkin.

Quyidagi jadvalda ba'zi tuval xususiyatlari va usullari mavjud:

Protsedura TextOut(X, Y: Butun son; const Matn: WideString);
String chiqishini ishlab chiqaradi Matn(X, Y) dan boshlab - matnning yuqori chap pikseli.
Xususiyat TextWidth( var Matn: String): Integer;
Ip uzunligini o'z ichiga oladi Matn piksellarda.
Xususiyat TextHeight( var Matn: String): Integer;
Chiziq balandligini o'z ichiga oladi Matn piksellarda.
Protsedura MoveTo(X, Y: Butun son);
Joyni manzil (X, Y) bilan pikselga o'tkazadi.
Protsedura LineTo(X, Y: Integer);
Joriy joylashuv nuqtasidan (X, Y) manzilli pikselga to'g'ri chiziq chizadi. Manzil (X, Y) joriy pozitsiyaning nuqtasiga aylanadi.
FillRect protsedurasi( const To'g'ri: TRect);
To'rtburchakni to'ldiradi Rekt joriy cho'tka yordamida tuvalda. Tuvaldagi tasvirning bir qismini o'chirish uchun boshqa narsalar qatorida foydalanish mumkin.

Keling, faqat ushbu kanvas usullaridan foydalangan holda, komponent tuvalidagi rasm uchun dastur yozamiz Rasm komponentga kiritilgan matn Eslatma:

Biz qiladigan birinchi narsa dastur boshlanganda o'zgaruvchilarni ishga tushirishdir. Chizma maydonining o'lchamini aniqlash kerak (biz buning uchun TRect tipidagi global o'zgaruvchini yaratamiz) va fon rangini o'rnating. Rasm oq:

tartib TForm1.FormCreate(Sender: TObject);
boshlanishi
Chap to'g'ri:=0;
Rect.Top:=0;
Rect.Right:=Image1.Width;
Rect.Bottom:=Image1.Height;
Image1.Canvas.Brush.Color:=clWhite;
oxiri;

Keyin rasmning yon tomonlariga ramka chizing:

tartib TForm1.page;
boshlanishi
bilan Tasvir 1. Kanvas qil
boshlanishi
MoveTo(0, 0);
LineTo(Image1.Width-1, 0);
LineTo(Image1.Width-1, Image1.Height-1);
LineTo(0, Image1.Height-1);
LineTo(0, 0);
oxiri;
oxiri;

Keling, nima bo'lganini sinab ko'raylik. Hammasi ishlaydi, lekin ramka hali ko'rsatilmagan. Shuning uchun, keling, protsedura qo'shamiz sahifa tartibda FormCreate. Endi chiroyli. Keyinchalik, biz Tasvirni o'chirish va tozalashning oddiy tartibini yozamiz. Har qanday tasvirni yangilashdan oldin uni chaqirish kerak bo'ladi, aks holda oldingi va keyingi tasvirlar bir-biriga mos keladi.

tartib TForm1.clearing;
boshlanishi
Image1.Canvas.FillRect(Rect); //To'rtburchak Rekt oq rang bilan to'ldiriladi va tasvir o'chiriladi.
oxiri;

Endi navbat matnni chiqarish protsedurasining o'zi. Keling, matnni chizishni (3, 3) nuqtadan boshlaylik - varaqning yuqori chap burchagi, 3 pikseldan bir oz chekinish. Har bir keyingi satr satr balandligi bo'yicha ofset qilinadi:

tartib TForm1.prn;
var i: butun son;
boshlanishi
bilan Tasvir 1. Kanvas qil
uchun i:=1 uchun Memo1.Lines.Count qil
TextOut(3, 3+(i-1)*TextHeight("A"), Memo1.Lines);
oxiri;

Endi hamma narsa matnni chiqarishga tayyor. Buni OnChange hodisasi yordamida qilamiz:

tartib TForm1.Memo1Change(Sender: TObject);
boshlanishi
tozalash;
prn;
sahifa;
oxiri;

Va nihoyat, shrift hajmini o'zgartirish tartibi:

tartib TForm1.Edit1Change(Sender: TObject);
boshlanishi
Memo1.Font.Size:=UpDown1.Position;
Image1.Canvas.Font.Size:=UpDown1.Position;
Memo1Change(Yuborish);
oxiri;

Siz ushbu dasturni matnni chop etish uchun o'zgartirishingiz mumkin. Printer bilan ishlash uchun modulni ulashingiz kerak Printerlar:

birlik 1-birlik;

Interfeys

foydalanadi
Windows, Xabarlar, SysUtils, Variantlar, Sinflar, Grafika, Boshqaruv elementlari, Shakllar,
Dialoglar, StdCtrls, Printerlar ;

Printer bilan kanvas sifatida ishlaganda, chop etishni boshlash uchun usul chaqiriladi BeginDoc, keyin hujjat chiqariladi, usulni chaqirish orqali chop etish tugallanadi EndDoc:

Printer.BeginDoc;
bilan Printer. Kanvas qil
boshlanishi
...Hujjatni chop etish...
oxiri;
Printer.EndDoc;

Printer tarmog'ining kengligi va balandligi xususiyatlar orqali mavjud Printer.PageWidth Va Printer.PageHeight. Usul yordamida bir sahifada chop etishni tugatishingiz va boshqa sahifada chop etishni boshlashingiz mumkin Printer.NewPage.

Agar xatolikni sezsangiz, matn qismini tanlang va Ctrl+Enter tugmalarini bosing
UMUSHISH: