Bitli tasvirlardan foydalanish
.Murakkab tasvirlarni tashkil etish uchun bitli tasvirlashdan foydalaniladi. Bitli tasvir—kompyuter xotirasida joylashgan katta bo’lmagan rasmdir. Bitli tasvirni baytlar yoki fayladgi resurslar orqali tashkil etish mumkin. Shuningdek, “forma sirtidan yoki boshqa bitli tasvirlardan olingan nusxalar bo’lishi mumkin”.
Bitli tasvirlarni garfik muharrirlar yordamida tayyorlash yoki dasturiy vositalar yordamida resurslardan yuklab olish mumkin. Oxirgi holat fayl resurslarini tashkil etish va unga bitli tasvirlarni joylashtirish imkonini beradi. Fayl resurslarini Image Editor utilitasi yordamida ham yaratish va tahrirlash mumkin.
Dasturdagi bitli tasvir — bu TBitmap obyektidir. Quyidagi jadvalda TBitmapning ayrim xossalari keltirilgan:
6-Jadval. TBitmap obyektining xususiyatlari
Xususiyatlari
|
Vazifasi
|
Height,Width
|
Bitli tasvir o’lchamlari. Fayl yoki resursdan yuklangan bitli tasvirga mos keluvchi qiymatlar
|
Empty
|
Bitli tasvirning fayldan yuklanganlik belgisi
|
Transparent
|
Shaffof rangni o’rnatish. Bu rang bilan bo’yalgan rasm elementlari Draw metodi chaqirilmaydi
|
Transparent Color
|
Shaffof rang rejimini o’rnatish. Odatda TransParentColor quyi chap piksel rangi bilan aniqlanadi
|
Canvas
|
Bitli tasvir sirti . Rasm xuddi forma sirtida yoki Image komponentasida chizilgani kabi
|
Bitli tasvirni bmp fayllarni chaqirilgani kabi LoadFromFile metodi bilan chaqirish mumkin. Masalan, quyidagi dastur bo’lagi bitli tasvirni fayldan yuklash ishini bajaradi:
*83-bet
Yuqorida keltirilgan dastur natijasi sifatida samolyot tasviri Plane bitli tasvirda aks etadi. Bitli tasvir tashkil etilgandan so’ng uni forma sirtiga yoki Image komponentasiga chiqarish mumkin. Canvas xossalari orasidan Draw metodini qo’llash orqali bu ish bajariladi. Draw metodining parametric sifatida bitli tasvir chiqariladigan nuqta koordinatasini berish mumkin. Masalan, ushbu
Canvas->Draw(10,20,Plane);
Operator forma sifatida Plane – samolyot rasmini chiqaradi.
Agar Draw metodini qo’llashdan avval bitli tasvirning Transparent xossasiga true qiymatlansa, u holda resurs rangi quyi chap burchakdagi piksel rangi bilan bir xil bo’lib, tasvir chiqarilmaydi. Bunday usul shaffof fonni hosil qilish imkonini beradi.Shaffof rangni TransParentColor ga mos holda almashinib chiqishini ham hosil qilish mumkin. Quyida keltirilgan dastur bitli tasvir bilan ishlashni namoyish etadi. Dastur ishga tushirilganda osmon va 2 ta samolyot tasviri hosil bo’ladi.Bu yerda osmon va samolyotlar dastur ishlashi davomida bitli tasvir joylashgan fayldan yuklanadi. Forma sirtiga chiqariluvchi bitli tasvirni yuklash uchun OnPaint xossasidan foydalaniladi. Chap tomonda joylashgan oq fonli, bitli tasvirdagi samolyot o’lchamlarini Plane ning rost qiymatini ko’rsatadi. O’ng tomonda joylashgan 2-samolyotda 2-marta hosil bo’lganda Transparent xossasi true qiymatni oladi.
Samolyot
void __fastcall TForm1::FormPaint(TObject *Sender)
{
Graphics::TBitmap *sky=new Graphics::TBitmap();
Graphics::TBitmap *plane=new Graphics::TBitmap();
sky->LoadFromFile("sky.bmp");
plane->LoadFromFile("plane.bmp");
Canvas->Draw(0,0,sky);
Canvas->Draw(20,20,plane);
plane->Transparent=true;
Canvas->Draw(120,20,plane);
sky->Graphics::~TBitmap();
plane->Graphics::~TBitmap();
}
Bitli tasvirning uncha katta bo’lmagan o’lchamlisi kafel bo’lakchalariga o’xshash ko’rinishdagi rasm foni shakilida qo’llaniladi. Quyidagi dastur forma sirtida ko’p qirrali shakldagi rasm fonini olish uchun yordam beradi. Bitli tasvirdagi ko’p qirrali fon rasmini olish uchun Background funksiyasidan foydalaniladi. Uning e’loni, shuningdek bitli tasvir e’lonini sarlavha faylida joylashgan sirtning private bo’limiga joylashtirish kerak. Bitli tasvirni yaratish va rasmni fayldan yuklash ishlarini OnCreate hodisasining funksiyasi bajaradi. OnPaint hodisasi tasvirni forma sirtiga chiqarishni bajaradi.
3.5 programma (7)
void __fastcall TForm1::FormCreate(TObject *Sender)
{
back = newGraphics::TBitmap();
try
{
Form1->back->LoadFromFile("Lega1.bmp");
}
catch(EFOpenError &e)
{
return;
}
}
void_fastcall TForm1:: Background()
{
int x=0,y=0;
if(back->Empty)
return;
do{
do{
Canvas->Draw(x,y,back);
x+=back->Width;
}
while(x}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender)
{
Background();
}
Do'stlaringiz bilan baham: |