Добавил:
bekan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:2-semestr / 11-ameliy_jif
.pdf
11-ámeliy jumıs. GUI ortalıǵında grafikalıq imkaniyatlar. GUI
ortalıǵında grafikalıq jaǵday, súwretlerdi hám funkciya grafiklerin sızıw
(Chart).
Jumıstıń maqseti: Windows Forms (C++/CLI) ortalıǵında GDI+
járdeminde súwretler (Images) menen islesiw hám `Chart` komponenti arqalı
maǵlıwmatlardı vizuallastırıw (grafikler sızıw) kónlikpelerin qáliplestiriw.
Súwretlerdi júklew, masshtablaw, aylandırıw hám saqlaw usılların úyreniw.
Statistikalıq maǵlıwmatlardı (mısalı, matematika funkciyaları yamasa esabatlar)
gistogramma, sızıqlı grafikalıq hám dumalaq diagramma kórinisinde
súwretlewdi ózlestiriw.
Teoriyalıq bólim:
Súwretler menen islesiw (GDI+)
GDI+ (System::Drawing) kitapxanası `Image` hám `Bitmap` klassları
arqalı rasterli (piksel) súwretlerdi (JPG, PNG, BMP) basqarıwǵa imkaniyat
beredi.
`Image` klassı: Súwretler ushın abstrakt tiykar klass. Onıń
`FromFile()` metodı arqalı fayldan súwret júklewge boladı.
`Bitmap` klassı: Pikseller menen tikkeley islesiw ushın arnalǵan
klass. `GetPixel(x, y)` hám `SetPixel(x, y, color)` metodları arqalı
hárbir pikseldiń reńin alıwǵa yamasa ózgertiwge boladı (mısalı,
filtrler jaratıw ushın).
Súwretti sızıw: `Graphics` klassınıń `DrawImage(image, x, y,
width, height)` metodı súwretti formaǵa yamasa basqa
komponentke (`PictureBox`) sızadı.
Chart komponenti (Maǵlıwmatlardı vizuallastırıw)
Windows Forms-ta maǵlıwmatlardı grafikalıq túrde kórsetiw ushın
`Chart` (System::Windows::Forms::DataVisualization::Charting) komponenti
qollanıladı. Bul komponent júdá kúshli hám kóp funkciyalı bolıp, ol Excel
grafiklerine uqsas imkaniyatlardı beredi.
Tiykarǵı elementleri:
`ChartAreas`: Grafiktiń sızılıw maydanı. Bir Chart ishinde bir
neshe maydan bolıwı múmkin.
`Series` (Seriyalar): Maǵlıwmatlar jıynaǵı. Hárbir seriya bir grafikti
(mısalı, "Satılıw" sızıǵı) ańlatadı. `ChartType` qásiyeti arqalı onıń
túrin (`Line`, `Column`, `Pie`, `Spline`) tańlawǵa boladı.

`Points` (Noqatlar): Seriyanıń ishindegi maǵlıwmat noqatları (X,
Y). Olar `series->Points->AddXY(x, y)` metodı arqalı qosıladı.
`Legends`: Grafiktiń túsindirmesi (Legenda).
`Titles`: Grafiktiń bas beti.
`Chart` komponenti matematikalıq funkciyalardı (y = sin(x)), statistikalıq
esabatlardı hám real waqıt rejimindegi processlerdi (mısalı, temperatura
ózgeriwi) kórsetiw ushın júdá qolaylı.
ÁMELIY BÓLIM:
Súwretler hám Chart penen islesiw mısalları.
1-mısal: Súwretti júklew hám kórsetiw
Formaǵa `PictureBox` hám `Button` qoyamız.
Kod (Button_Click):
private: System::Void btnLoad_Click(...) {
// Fayldı tańlaw dialogın ashıw
OpenFileDialog^ dialog = gcnew OpenFileDialog();
dialog->Filter = "Súwretler|*.jpg;*.png;*.bmp";
if (dialog->ShowDialog() ==
System::Windows::Forms::DialogResult::OK) {
// Súwretti fayldan júklew
Image^ img = Image::FromFile(dialog->FileName);
// PictureBox-qa qoyıw
pictureBox1->Image = img;
// Súwretti qutıǵa sıydırıw (Stretch)
pictureBox1->SizeMode = PictureBoxSizeMode::StretchImage;
}

}
Túsindirme: `OpenFileDialog` paydalanıwshıǵa kompyuterden fayl tańlaw
imkaniyatın beredi. `Image::FromFile` metodı tańlanǵan fayldı yadqa júkleydi.
`SizeMode::StretchImage` súwretti qutınıń ólshemine sáykeslep sozadı.
2-mısal: Matematikalıq funkciya grafigi (Sinus)
Formaǵa `Chart` komponentin qoyamız.
Kod (Form_Load):
private: System::Void MyForm_Load(...) {
// Grafikti tazalaw
chart1->Series[0]->Points->Clear();
// Grafiktiń túrin "Spline" (Iyilgen sızıq) qılıw
chart1->Series[0]->ChartType =
System::Windows::Forms::DataVisualization::Charting::SeriesChartType
::Spline;
// Sinus grafigin sızıw (-10 dan 10 ǵa shekem)
for (double x = -10; x <= 10; x += 0.1) {
double y = Math::Sin(x);
chart1->Series[0]->Points->AddXY(x, y);
}
}
Túsindirme: `Series[0]` – bul `Chart` tıń birinshi (default) seriyası. Biz
`AddXY` metodı arqalı oǵan kóp noqatlar qostıq. `Spline` tipi noqatlardı tegis
sızıq penen jalǵaydı.
3-mısal: Gistogramma (Column Chart)
Studentlerdiń bahaların kórsetiw.

Kod:
chart1->Series[0]->ChartType = SeriesChartType::Column;
chart1->Series[0]->Points->AddXY("Azamat", 5);
chart1->Series[0]->Points->AddXY("Guli", 4);
chart1->Series[0]->Points->AddXY("Timur", 3);
chart1->Series[0]->Name = "Bahalar";
Túsindirme: `Column` tipi maǵlıwmatlardı baǵanalar retinde kórsetedi. X
kósherinde atlar, Y kósherinde bahalar boladı.
ÁMELIY TAPSÍRMALAR
1. `PictureBox` qa kod arqalı (fayl jolı menen) súwret júkleń.
2. `Chart` qa 5 noqatlı sızıqlı (`Line`) grafik sızıń (1,1), (2,4), (3,9)...
3. Súwretti 90 gradusqa aylandırıń (`RotateFlip`).
4. `Chart` tıń fon reńin (`BackColor`) ózgertiń.
5. "Dumalaq diagramma" (`Pie`) sızıń (Alma: 40%, Anar: 60%).
6. Súwretti faylǵa saqlań (`Save`).
7. `Chart` qa bas bet (`Title`) qosıń.
8. `PictureBox` tıń `SizeMode` qásiyetin (`Zoom`, `Center`) ózgertip kóriń.
9. Súwrettiń reńlerin inversiyalaw (Negativ): `Bitmap` penen hárbir
pikseldiń reńin `255 - R`, `255 - G`, `255 - B` etiń.
10. `Chart` qa eki seriya qosıń: biri Sinus, ekinshisi Kosinus. (Hár qıylı reńde
bolsın).
11. Súwrettiń ústine tekst jazıń (`Graphics` hám `DrawString` qollanıp).
12. `Chart` tıń X hám Y kósherlerine atama (`AxisX->Title`) beriń.
13. Real waqıt grafigi: `Timer` járdeminde `Chart` qa hár sekundta kishi
tosınnan san (random) qosıp, jılısıp turatuǵın grafik dúziń.
14. Súwretti kúlreń (Grayscale) reńge aylandırıń (Formula: `Y = 0.3R +
0.59G + 0.11B`).
Соседние файлы в папке 2-semestr
