O’ZBEKISTON RESPUBLIKASI AXBOROT
TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI
RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT
TEXNOLOGIYALARI UNIVERSITETI
QARSHI FILIALI
_________________KI_______________ FAKULTETI _______14-
22____________ GURUH TALABASINING
DASTURLASH
FANIDAN
5-MUSTAQIL ISH
Bajardi: Marqayev.Sh
Qabul qildi: Nosirov.B
Visual C++ ning grafik imkoniyatlari (grafik holat, tasvirlarni va funksiya grafiklarini
qurish)
REJA
1. Chart komponentalari.
2. Visual C++ muhitida ko'p oynali muhitni yaratish
3.
Visual C++ muhitida turli sohaga oid masalalarni yechish uchun kichik loyihalarni
loyihalash usullari.
Chart komponenta
xususiyati va hodisalari
. Bu komponenta Data tab bo‘limiga
joylashgan bo‘lib, asosan ma’lumotlarni infografiklarni yaratish uchun ishlatiladi.
Infografik uchun ma’lumotlar to‘plami kerak.
Bu komponentaning xusussiyati va hodisalari boshqa komponentalarniki kabi bo‘lib,
xuddi o‘shalar kabi bo‘limlarga bo‘lingan. Ularning maxsuslarini keltirib o‘tamiz.
BorderSkin xususiyatlar gruppasi bo‘lib, unda komponentaning yangi niqobga solish
mumkin. Niqob deganda, uning yangi ko‘rinishi inobatga olingan. Rang (color), rasm
(image), stil (style), kengligi (width) kabi xususiyatlari mavjud. Bu xususiyatlarni
o‘rnatish muammo keltirib chiqarmaydi. Oldingi o‘rganganlaringizda bunday
xususiyatlardan uchun ishlatiladi. Infografik uchun ma’lumotlar to‘plami kerak.
Bu komponentaning xusussiyati va hodisalari boshqa komponentalarniki kabi bo‘lib,
xuddi o‘shalar kabi bo‘limlarga bo‘lingan. Ularning maxsuslarini keltirib o‘tamiz.
1.
BorderSkin xususiyatlar gruppasi bo‘lib, unda komponentaning yangi niqobga
solish mumkin. Niqob deganda, uning yangi ko‘rinishi inobatga olingan. Rang
(color), rasm (image), stil (style), kengligi (width) kabi xususiyatlari mavjud.
Bu xususiyatlarni o‘rnatish muammo keltirib chiqarmaydi. Oldingi
o‘rganganlaringizda bunday xususiyatlardan foydalangansiz. SHuningdek
asosiy niqob bu SkinStyle bo‘lib, komponentaning asosiy ko‘rinishini
o‘zgartrish uchun xizmat qiladi. Uning mos qiymatlar ro‘yxati mavjud, shundan
keraklisini tanlabolish mumkin.
2.
Palette (palitra) – xususiyati yordamida komponentaning infografikani
ko‘rsatadigan shaklini tanlash mumkin. Uning mos qiymatlar ro‘yxati mavjud.
3.
PaletteCustomColors – bunda ham komponentaning infografikani
ko‘rsatadigan shaklini tanlash mumkin. Ammo foydalanuvchi o‘zining rangi
tanlashimi mumkin. Bunda maxsus muloqot oynasi aosida palitraga turli
ranglarni qo‘shish mumkin.
4.
Annotations – bunda komponentaga izohlarni yozish mumkin. Buning o‘zining
xususiyatlari maxsus muloqot oynasi yordamida o‘rnatiladi.
5.
ChartAreas – bu xususiyat orqali komponentaga bir nechata chart infografika
joylashtirish mumkin. Buning ham o‘zi mos xususiyatlarini mos muloqot
oynasi bilan o‘rnatish lozim.
6.
Legends – infografikaga keltirilgan qiymatlarining joylashish maydoni. Buni
ham maxsus muloqot oynasi asosida tahrir qilish mumkin
7.
Series – bu xususiyat asosiy bo‘lib, infografikaning qiymatlarini belgilovchi,
har bir qiymat tegishliligini bildiradi. Buning uchun maxsus mulovot oynasi
mavjud. Bunga to‘liqroq to‘xtalib o‘tamiz.
8.
ChartAreas – bu xususiyat orqali komponentaga bir nechata chart infografika
joylashtirish mumkin. Buning ham o‘zi mos xususiyatlarini mos muloqot
oynasi bilan o‘rnatish lozim.
9.
Legends – infografikaga keltirilgan qiymatlarining joylashish maydoni. Buni
ham maxsus muloqot oynasi asosida tahrir qilish mumkin
10.
Series – bu xususiyat asosiy bo‘lib, infografikaning qiymatlarini belgilovchi,
har bir qiymat tegishliligini bildiradi. Buning uchun maxsus mulovot oynasi
mavjud. Bunga to‘liqroq to‘xtalib o‘tamiz.
11.
Titles – komponentalarga joylashtirilgan infografikalarga sarlavha qo‘yish
uchun ishlatiladi. Uning maxsus muloqot oynasi orqali ishlov berish orqali
shrnatish mumkin.
Series – bu komponentaga qiymatlarni qo‘shish va uni tasvirlash uchun xizmat qiladi.
Komponentaning ichiga joylashtirilgan sohani tahrirlash uchun ishlatiladi. Unga
bosganda quyidagi muloqot oynasi chiqadi.
12.9-rasm. Tahrirlash oynasi.
Bu oynda yangi qiymatlar maydoni qo‘shish uchun [Add] tugmasi va uni o‘chirish
uchun [Remove] tugmasi ishlatiladi. Infografikaning asosiy xususiyatlarini boshqarish
uchun o‘ng tomondagi xususiyatlar panelidan foydalanish mumkin. Unda
infografikani taxhrirlash uchun zarur bo‘lgan barcha xususiyatlar bor. Ulardan biri bu
ChartType bo‘lib, infografikaning turlarini belgilash uchun xizmat qiladi. Uning
turlari quyidagi 12.10-rasmda keltirilgan.
12.10-rasm. Infografikaning turlari
SHuningdek, infografikaning ma’lumotlari,
yozuvlari
, qiymatlari, maydoni, qiymat
turlari, chegaralari bilan ishlash xususiyatlari xam muvjud. Odatda bu xususiyatlarni
dasturlash orqali dastur fragmentlarida o‘rnatish fa foydalanish dasturchiga qulay
hisoblanadi. Ammo vizual dusturlashning imkoniyatidan foydalanish uchun buni ham
ishlatishni o‘rganish lozim.
Funksiyalarni grafiklarini qurish. Infografika komponentasiga mos ravishda
funksiyalarni grafikgini chizish usullari ko‘rib chiqamiz.
Matematik funksiyalarni grafiklarini chizish uchun avval shu funksiyalarni bir sinfga
yaratib olamiz.
private value class MyFunction
{
private:
double _value;
public:
double getValuePow(double x) {
return Math::Pow(x, 2);
}
double getValueX4(double x){
return x*x*x*x;
}
double getValuekxa(double x, int k, int a){
return k*x+a;
}
};
Bu ko‘rinishda matematikaning barcha funksiyalarini yaratib olish yoki to‘g‘ridan
to‘g‘ri foydalanish mumkin.
Chart komponentasiga grafikni chizish uchun Form1_Load hodisasiga quyidagicha
algoritmni yozamiz.
chart1->Series->Clear();
Series^ series1 = gcnew Series(L"X^2 grafigi");
// rangni tanlash
series1->Color = Color::Blue;
series1->IsVisibleInLegend = true;
series1->IsXValueIndexed = true;
// infografikani turini tanlash
series1->ChartType = SeriesChartType::Line;
// qiymatlar qatlamini qo`shish
chart1->Series->Add(series1);
//
qiymatlarni
MyFunction^ func = gcnew MyFunction();
for (double i = 0; i < 10; i++) {
series1->Points->AddXY(i, func->getValuePow(i));
}
Agar dasturni ishlatsak
, bir funksiyaning grafigini chizish imkoniyatini beradi.
12.11-rasm. funksiyaning grafigi.
Bir vaqtning o‘zida bir nechta funksiyaning grafiklarini chizish uchun yuqorida
aniqlangan sinfdan foydalanib, Form1_Load hodisasiga quyidagicha algoritmni
yozamiz.
chart1->Series->Clear();
Series^ series1 = gcnew Series(L"Cos(x)");
Series^ series2 = gcnew Series(L"Sin(x)");
Series^ series3 = gcnew Series(L"kx+a");
// rangni tanlash
series1->Color = Color::Blue;
series2->Color = Color::Red;
series3->Color = Color::Green;
// infografikani turini tanlash
series1->ChartType = SeriesChartType::Spline;
series2->ChartType = SeriesChartType::Spline;
series3->ChartType = SeriesChartType::Spline;
// qiymatlar qatlamini qo`shish
chart1->Series->Add(series1);
chart1->Series->Add(series2);
chart1->Series->Add(series3);
// qiymatlarni
MyFunction^ func = gcnew MyFunction();
for (double i = 0; i <= 100; i++) {
series3->Points->AddXY(i, func->getValuekxa(i*0.01,1,0));
series1->Points->AddXY(i, Math::Cos(i));
series2->Points->AddXY(i, Math::Sin(i));
}
chart1->Series->Clear();
Series^ series1 = gcnew Series(L"Cos(x)");
Series^ series2 = gcnew Series(L"Sin(x)");
Series^ series3 = gcnew Series(L"kx+a");
// rangni tanlash
series1->Color = Color::Blue;
series2->Color = Color::Red;
series3->Color = Color::Green;
// infografikani turini tanlash
series1->ChartType = SeriesChartType::Spline;
series2->ChartType = SeriesChartType::Spline;
series3->ChartType = SeriesChartType::Spline;
// qiymatlar qatlamini qo`shish
chart1->Series->Add(series1);
chart1->Series->Add(series2);
chart1->Series->Add(series3);
// qiymatlarni
MyFunction^ func = gcnew MyFunction();
for (double i = 0; i <= 100; i++) {
series3->Points->AddXY(i, func->getValuekxa(i*0.01,1,0));
series1->Points->AddXY(i, Math::Cos(i));
series2->Points->AddXY(i, Math::Sin(i));
}
Agar dasturni ishlatsak, bir funksiyalarning grafigini chizish imkoniyatini beradi.
12.12-rasm. Funksiyalarning grafigi.
Gistagramma grafiklarini chizish uchun massivlardan yoki ixtiyoriy to‘plamlardan
foydalanish mumkin. Buning uchun 3 ta massiv olamiz, Form1_Load hodisasiga
quyidagicha algoritmni yozamiz
chart1->Series->Clear();
Title^ title = gcnew Title("Sotilgan texnikalar soni ");
chart1->Titles->Add(title);
Series^ series1 = gcnew Series(L"Telefon");
Series^ series2 = gcnew Series(L"Kompyuter texnikasi");
Series^ series3 = gcnew Series(L"Avtomashina");
// rangni tanlash
series1->Color = Color::Blue;
series2->Color = Color::Red;
series3->Color = Color::Green;
// infografikani turini tanlash
series1->ChartType = SeriesChartType::Column;
series2->ChartType = SeriesChartType::Column;
series3->ChartType = SeriesChartType::Column;
// qiymatlar qatlamini qo`shish
chart1->Series->Add(series1);
chart1->Series->Add(series2);
chart1->Series->Add(series3);
// qiymatlarni
array^ arr1 = {30,20,56,80,85};
array^ arr2 = {50,70,50,65,75};
array^ arr3 = {80,50,50,30,45};
for (int i = 0; i < arr1->Length; i++) {
series3->Points->AddXY(i, arr3[i]);
series1->Points->AddXY(i, arr2->GetValue(i));
series2->Points->AddXY(i, arr1->GetValue(i));
}
chart1->Series->Clear();
Title^ title = gcnew Title("Sotilgan texnikalar soni ");
chart1->Titles->Add(title);
Series^ series1 = gcnew Series(L"Telefon");
Series^ series2 = gcnew Series(L"Kompyuter texnikasi");
Series^ series3 = gcnew Series(L"Avtomashina");
// rangni tanlash
series1->Color = Color::Blue;
series2->Color = Color::Red;
series3->Color = Color::Green;
// infografikani turini tanlash
series1->ChartType = SeriesChartType::Column;
series2->ChartType = SeriesChartType::Column;
series3->ChartType = SeriesChartType::Column;
// qiymatlar qatlamini qo`shish
chart1->Series->Add(series1);
chart1->Series->Add(series2);
chart1->Series->Add(series3);
// qiymatlarni
array^ arr1 = {30,20,56,80,85};
array^ arr2 = {50,70,50,65,75};
array^ arr3 = {80,50,50,30,45};
for (int i = 0; i < arr1->Length; i++) {
series3->Points->AddXY(i, arr3[i]);
series1->Points->AddXY(i, arr2->GetValue(i));
series2->Points->AddXY(i, arr1->GetValue(i));
}
Agar dasturni ishlatsak, Gistagramma grafigini chizish imkoniyatini beradi.
12.13-rasm. Gistagramma
grafiklarini chizish
Grafiklarini alohida sohasha chizish uchun massivlardan yoki ixtiyoriy to‘plamlardan
foydalanish mumkin. Buning uchun 3 ta massiv olamiz, Form1_Load hodisasiga
quyidagicha algoritmni yozamiz
chart1->Series->Clear();
ChartArea^ chartArea1 = gcnew ChartArea();
ChartArea^ chartArea2 = gcnew ChartArea();
ChartArea^ chartArea3 = gcnew ChartArea();
chartArea1->Name = "1";
chartArea2->Name = "2";
chartArea3->Name = "3";
this->chart1->ChartAreas->Add(chartArea1);
this->chart1->ChartAreas->Add(chartArea2);
this->chart1->ChartAreas->Add(chartArea3);
Title^ title = gcnew Title("Sotilgan texnikalar soni ");
chart1->Titles->Add(title);
Series^ series1 = gcnew Series(L"Telefon");
Series^ series2 = gcnew Series(L"Kompyuter texnikasi");
Series^ series3 = gcnew Series(L"Avtomashina");
// rangni tanlash
series1->Color = Color::Blue;
series2->Color = Color::Red;
series3->Color = Color::Green;
// infografikani turini tanlash
series1->ChartType = SeriesChartType::SplineArea;
series2->ChartType = SeriesChartType::SplineRange;
series3->ChartType = SeriesChartType::Spline;
series1->ChartArea = chartArea1->Name;
series2->ChartArea = chartArea2->Name;
series3->ChartArea = chartArea3->Name;
// qiymatlar qatlamini qo`shish
chart1->Series->Add(series1);
chart1->Series->Add(series2);
chart1->Series->Add(series3);
// qiymatlarni
array^ arr1 = {30,20,56,80,85};
array^ arr2 = {50,70,50,65,75};
array^ arr3 = {80,50,50,30,45};
for (int i = 0; i < arr1->Length; i++) {
series3->Points->AddXY( i, arr3[i]);
series1->Points->AddXY( i, arr2->GetValue(i));
series2->Points->AddXY( i, arr1->GetValue(i));
}
series3->Color = Color::Green;
// infografikani turini tanlash
series1->ChartType = SeriesChartType::SplineArea;
series2->ChartType = SeriesChartType::SplineRange;
series3->ChartType = SeriesChartType::Spline;
series1->ChartArea = chartArea1->Name;
series2->ChartArea = chartArea2->Name;
series3->ChartArea = chartArea3->Name;
// qiymatlar qatlamini qo`shish
chart1->Series->Add(series1);
chart1->Series->Add(series2);
chart1->Series->Add(series3);
// qiymatlarni
array^ arr1 = {30,20,56,80,85};
array^ arr2 = {50,70,50,65,75};
array^ arr3 = {80,50,50,30,45};
for (int i = 0; i < arr1->Length; i++) {
series3->Points->AddXY( i, arr3[i]);
series1->Points->AddXY( i, arr2->GetValue(i));
series2->Points->AddXY( i, arr1->GetValue(i));
}
Dastur fragmentini tahlil qilish orqali yangi infografika sohalarni qo‘shish va ularni
qiymatlar o‘plami bilan bog‘lashni ko‘rishinig mumkin. Agar dasturni ishlatsak,
Gistagramma grafigini chizish imkoniyatini beradi.
12.14-rasm. Bitta Chart ga bir nechta sohani joylashtirish.
Chart komponentasi yordamida foydlanuvchining ixtiyoriy ma’lumotlarini
infografikasini yaratish mumkin. Bu juda katta imkoniyatli komponenta hisoblanadi.
Buni xammasini o‘rganish uchun ko‘proq amaliyot qilish lozim. YUqorida uning
ba’zi imkoniyatlarini keltirgan holda komponentaning xususiyatlari va hodisalari
bo‘yicha nazariy va amaliy ma’lumotlarni keltirdik.
Dostları ilə paylaş: |