Скачиваний:
4
Добавлен:
20.05.2024
Размер:
614.61 Кб
Скачать

12-lekciya. GUI ortalıǵında grafikalıq imkaniyatlar. GUI ortalıǵında grafikalıq jaǵday,

kórinislerdi hám funkciya grafiklerin dúziw (Chart).

Jobası:

1.GUI ortalıǵında grafikalıq jaǵday, súwretlerdi hám funkciya grafikların dúziw.

2.Graphics klası usılları tiykarında súwretlerdi jaratıw.

3.Chart komponentaları.

4.Funkciyalardıń grafiklerin dúziw.

Grafika klası usılları tómendegilerden ibarat:

1.AddMetafileComment(Byte[]) - Súwret metafaylına túsindirme qosadı. Bunda Byte[] belgili massiv bolıp, <System::Byte> ^ data tipinde anıqlanadı hám mısalı, array<Byte>^metaCom = {(Byte)'T',(Byte)'e',(Byte)'s',(Byte)'t'}; sıyaqlı anıqlanıwı múmkin.

2.BeginContainer() - Grafikanıń házirgi jaǵdayı menen grafik konteynerdi saqlaydı hám jańa grafik konteynerdi ashadı hám isletedi.

BeginContainer(Rectangle, Rectangle, GraphicsUnit) - Grafik ámeldegi jaǵdayı menen bir grafik konteyner saqlaydı, belgilengen parametrli ózgertiw menen jańa grafik konteynerden

paydalanadı hám ashadı. Bunda Rectangle tórt múyesh bolıp, Rectangle(0,0,200,200) sıyaqlı anıqlanadı. Birinshi tórtmúyesh konteyner ushın shkalanı hám ekinshisi konteyner ushın tarawdıń ózgeriwin anıqlaydı. GraphicsUnit - konteyner ushın ólshem birligin anıqlaw ushın qollanıladı.

Úshmúyeshlik sızıw. Bunda komponentanıń berilgen ornında, reńli sızıqlar arqalı úshmúyeshlik sızıwdı kóremiz. Onıń ushın 1 komponenta, 1 túyme hám 6 textBox komponentaların aynaǵa qolaylı etip jaylastıramız. Sebebi 3 sızıqtıń birlestirsek, úshmúyeshlik payda boladı.

1-adım. Aynanıń Form1_Load hádiysesinde tómendegi algoritmdi jaylastıramız.

this->Text = "DrawLine - úshmúyeshlik sızıw"; button1->Text = "SÍZÍW";

2-adım. Komponenta hám textBox qásiyetlerin sazlaw ámellerin orınlaw múmkin.

3-adım. Sızıq sızıw ushın noqatlarǵa int myPoint[6]; ózgeriwshisin alamız.

 

4-adım. Komponentanıń

Paint degen hádiysesine tómendegi

algoritmdi

jaylastıramız.

1

myPoint[1], myPoint[2], myPoint[3], myPoint[4]); e->Graphics->DrawLine(System::Drawing::Pens::Black,

myPoint[3], myPoint[4], myPoint[5], myPoint[6]); e->Graphics->DrawLine(System::Drawing::Pens::Blue,

Ellips sızıw. Bunda komponentanıń berilgen ornında, reńli ellips sızıwdı kóremiz. Onıń ushın 1 komponenta, 1 Button hám 4 textBox komponentaların aynaǵa qolay etip jaylastıramız.

1-adım.

Aynanıń

Form1_Load-qa tómendegi algoritmdi

jaylastıramız.

 

 

this->Text = "Ellips - sızıw";

button1->Text = "SÍZÍW";

2-adım. Komponenta hám textBox qásiyetlerin sazlaw ámellerdi orınlaw.

3-adım. Sızıq sızıw ushın noqatlarǵa int myPoint[4]; ózgeriwshisin alamız.

4-adım. Komponentanıń Paint degen hádiysesine tómendegialgoritmdi jaylastıramız.

Pen ^ pen = gcnew Pen(Color::Black);

myPoint[1], myPoint[2], myPoint[3], myPoint[4]);

1- Súwret. DrawEllipse sızıw nátiyjesi.

Joqarıda keltirilgen sızıwlar arqalı basqa qálegen sırtqı kórinislerdi de sızıw múmkin. Túrli sırtqı kórinislerdi sızıp boyawdı kóremiz.

2

Túrli sırtqı kórinislerdi boyaw. Bunda komponentanıń berilgen orınında, boyalǵan formalardı sızıwdı kóremiz. Onıń ushın Brush - qálemnen paydalanıp, 1 label hám 1 Combox komponentaların aynaǵa qolaylı etip jaylastıramız.

1-adım. Aynanıń Form1_Load hádiysesinde tómendegi algoritmdi jaylastıramız.

this->Text = "Figuranı boyaw"; label1->Text = "Kerekli figuranı tańlań:";

comboBox1->Text = "Figuralar";comboBox1->Items->Add("Tórtmúyeshlik");

comboBox1->Items->Add("Ellipis"); comboBox1->Items->Add("Sheńber");

comboBox1->Items->Add("Sheńber");

2-adım.

Komponenta

hám

ComboBox

qásiyetlerin sazlaw kerek.

 

 

3-adım.

ComboBox

komponentasınıń

comboBox1_SelectedIndexShanged

 

4- hádiysesinde tómendegi algoritmdı jaylastıramız.

Graphics ^grp = pictureBox1->CreateGraphics(); Brush ^ brsh = gcnew SolidBrush(Color::Green); grp- >Clear(SystemColors::Control);

switch (comboBox1->SelectedIndex){ case 0: grp->FillRectangle(brsh,50,50,150,150); break; case 1: grp->FillEllipse(brsh,50,50,300,150); break; case 2: grp->FillEllipse(brsh,50,50,150,150); break; case 3: grp->FillPie(brsh,50,50,150,150,150,100); break; default: grp->Clear(SystemColors::Control);break;

}

2- Súwret. Túrli sırtqı kórinislerdi boyaw nátiyjesi.

Hádiyseler arqalı forma sızıw. Hámme " Paint" sıyaqlı programmalarda eń

ájayıp qásiyetlerinen biri tıshqansha menen sızıqlar sızıw bolıp tabıladı. Bunı ámelge asırıw ushın komponenttiń tıshqansha menen islew " MousDown", " " MausUp" hám " MouseMove" hádiyselerinen paydalanıw múmkin. Programmanıń algoritmı ideyası

3

tómendegishe: paydalanıwshı tıshqanshanıń shep túymesin basqanda kursor arqasına júdá kóp kishi kvadratlar sızıla baslaydı. Bul kvadratlar kólemi kodta kórsetilgen. Bunnan tısqarı, "Button" konopkasın súwretke túsiretuǵın formaǵa kóshiriwińiz kerek. Bunda komponentanıń berilgen ornında, tıshqansha hádiyseleri arqalı formalardı sızıwdı kóremiz. Onıń ushın Brush - qálemnen paydalanıp, 1 komponenta, 1 button komponentasın aynaǵa qolaylı etip jaylastıramız.

1-adım. Aynanıń Form1_Load hádiysesinde tómendegi algoritmdı jaylastıramız.

button1->Text = "Tazalaw";

this->Text = "Figura sızıw";

2-adım. Komponenta hám button qásiyetlerin sazlaw ámellerdi orınlaw

múmkin.

 

 

 

3-adım.

Button

komponentasınıń

button1_Click

hádiysesinde

tómendegi algoritmdı jaylastıramız. Bul algoritm

komponentanı tazalaw ushın qollanıladı.

Graphics ^ grp = pictureBox1->CreateGraphics();

grp->Clear(SystemColors::Window);

4-adım. Komponentanıń tıshqansha hádiyselerin qayta islew ushın Logikalıq bir ózgeriwshi alınadı, onıń ma`nisi [0] bo‘lsin. Bool Drow = false;

5-adım. Tıshqansha komponentanıń ústine kelip logikalıq ózgeriwshiniń mánisi 1 ge ózgeredi. Sebebi sızıwdı baslaw ushın. Bunı ámelge asırıws ushın tıshqanshanıń pictureBox1_MouseDown hádiysesine Drow = true; ni jazıp qoyamız.

6-adım. Tıshqansha komponentanıń ústinen ketkende logikalıq ózgeriwshiniń ma`nisi 0 ge ózgeredi. Sebebi sızıwdı tamamlaw ushın. Bunı ámelge asırıw ushın tıshqanshanıń pictureBox1_MouseUp hádiysesine Drow= false; ni jazıp qóyamız.

7-adım. Tıshqansha

komponentanıń ústinde kelip sızıwı ushın

tómendegi algoritmdı kiritemiz.

 

Graphics^ graf = pictureBox1->CreateGraphics(); if (Drow == true){

graf->FillEllipse(Brushes::Violet, e->X, e->Y, 3,3); // qálem qalıńlıǵı

Algoritmde figuralardı

payda etiw ushın júdá kishi elliplerden paydalanamız.

4

3-súwret. Tıshqansha menen túrli sırtqı kórinislerdi sızıw.

Súwretlerdi ózgertiw. Onıń ushın fayllardı júklew openFiledialog hám fayllardı saqlaw saveFiledialog komponentalarınan paydalanamız. Onıń ushın

Brush - tan paydalanıp, 1 komponenta, 3 button komponentasın aynaǵa qolaylı etip jaylastıramız. Buttonlarnıń birinshisi, súwretti redaktorlawdı hám tazalawdı ámelge asıradı, ekinshisi, redaktorlanǵan súwretti saqlaw ushın, úshinshisi súwretti redaktorlaw ushın júklewdi ámelge asıradı. using namespace System::Drawing::Drawing2 D; ni qosıp qoyıw kerek.

1-adım. Súwretlerdi ózgertiw ushın isletiletuǵın ózgeriwshilerdi járiyalaymız.

private: Bitmap ^ bmp_for_draw;

private: Point start_point; private: bool Draw; public: Pen^ pen_for_draw;

private: String ^ full_name_of_image;

2-adım. Programma aynasınıń Form1_Load hádiysesine dáslepki sazlamalardı ornatamız:

this->Text = "Súwretti redaktorlaw"; button1->Text = "Tazalaw"; button2->Text= "Súwretti saqlaw"; button3->Text = "Súwretti júklew";

pen_for_draw = gcnew Pen(Color::Black, 4);

5

Bunda komponentalardı sazlaw hám bir qálemdi jaratıp alıw, onıń StartCap,

EndCap qásiyetlerin ornatıw ámelge asırıladı.

3-adım. Komponenttegi súwretti tazalaw ushın button1_Click hádiysege

algoritmdi jazamız.

Graphics^ grp = pictureBox1->CreateGraphics(); grp->Clear(SystemColors::Window);

4-adım. Tıshqancha komponentanıń ústine kelip sızıwı ushın PictureBox1_MouseDown hádiysesine tómendegi algoritmdı kiritemiz

if (e->Button == System::Windows::Forms::MouseButtons::Left){ Draw = true;

start_point = e->Location;

5-adım. Tıshqansha komponentanıń ústinde ketkende sızıwdı toqtatıw

ushın pictureBox1_MouseUp hádiysesine tómendegi algoritmdı kiritemiz

if (e->Button == System::Windows::Forms::MouseButtons::Left){

Draw = false;

6-adım. Komponentǵa kerekli súwretti júklew ushın button3_Click Hádiysesine tómendegi algoritmdı jazıladı:

OpenFileDialog ^ open_dialog = gcnew OpenFileDialog();

open_dialog->Filter = "Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG|All files (*.*)|*.*";

if (open_dialog->ShowDialog() == System::Windows::Forms::DialogResult::OK){

full_name_of_image = open_dialog->FileName; bmp_for_draw = gcnew Bitmap(open_dialog->FileName);

//pictureBox1->Size = bmp_for_draw->Size;

pictureBox1->SizeMode = PictureBoxSizeMode::StretchImage; pictureBox1->Image = bmp_for_draw;

>Invalidate();

} catch(Exception^ e) {

System::Windows::Forms::DialogResult rezult = MessageBox::Show("Tańlanǵan fayl

6

Bundaǵı tiykarǵı kemshilik sonnan ibarat, eger Súwrettiń Ólshemleri komponentanıń ólshemleri menen birdey bolsa, jaqsı sızadı, birdey bolmasa, paydalanıwshı ekranınıń proporciyasın alıp sızadı.

Chart komponenta ózgesheligi hám hádiyseleri. Bul komponenta Data tab bóliminde jaylasqan bolıp, tiykarǵı maǵlıwmatlardı infografiklardı jaratıw ushın qollanıladı. Infografika ushın maǵlıwmatlar kompleksi kerek.

Bul komponenta hádiyseleri basqa komponentalardiki sıyaqlı bolıp, tap sol sıyaqlı bólimlerge bólingen. Olardıń ayırımların atap ótemiz.

1.1. BarderSkin ayrıqshalıqlar gruppası bolıp, ol jaǵdayda komponentanıń jańa maskaǵa salıw múmkin. Maska degende, onıń jańa kórinisi esapqa alınǵan. Reń (color), súwret (image), stil (style), keńligi (width) sıyaqlı qásiyetleri bar. Bul ayrıqshalıqlardı ornatıw mashqala keltirip shıǵarmaydı. Aldınǵı úyrengenlerrińizde bunday ayrıqshalıqlardan paydalanǵansız. Sonıń menen birge tiykarǵı maska bul SkinStyle bolıp, komponentanıń tiykarǵı kórinisin ózgertiw ushın xızmet etedi. Onıń uyqas bahalar dizimi ámeldegi, sonnan kereklisin tańlap alıw múmkin.

2.Palette (palitra ) - ózgesheligi járdeminde komponentanıń infografikanı kórsetetuǵın formasın tańlaw múmkin. Onıń uyqas bahalar dizimi ámeldegi.

3.PaletteCustomColors - bundada komponentanıń infografikanı kórsetetuǵın formanı Tańlaw múmkin. Biraq paydalanıwshı óziniń reńi tańlawıda

múmkin. Bunda arnawlı baylanısıw aynası palitraǵa túrli reńlerdi qosıw múmkin.

4.Annotations - bunda komponentaǵa túsindirmelerdi jazıw múmkin. Bunıń óziniń qásiyetleri arnawlı baylanısıw aynası járdeminde ornatıladı.

5.ChartAreas - bul ózgeshelik arqalı komponentaga bir neshe chart

infografika jaylastırıw múmkin. Bunıńda ózi uyqas qásiyetlerin uyqas baylanısıw

aynası menen ornatıw kerek.

6.Legends - infografikaǵa keltirilgen bahalarınıń jaylasıw maydanı. Bunı da arnawlı baylanısıw aynası tiykarında redaktorlaw múmkin

7.Series - bul ózgeshelik tiykarǵı bolıp, infografikanıń bahaların belgileytuǵın, hár bir baha tiyisliligin ańlatadı. Onıń ushın arnawlı dialog aynası bar. Buǵan tolıqlaw toqtalıp ótemiz.

8.Titles - komponentalarǵa jaylastırılǵan infografikalarga bas bet qoyıw

7

ushın qollanıladı. Onıń arnawlı baylanısıw aynası arqalı qayta islew arqalı ornatıwǵa boladı.

Series - bul komponentaga bahalardı qosıw jáne onı súwretlew ushın xızmet etedi. Komponentanıń ishine jaylastırılǵan tarawdı redaktorlaw ushın qollanıladı.

Oǵan basqanda tómendegi baylanısıw aynası shıǵadı.

4- Súwret. Redaktorlaw áynegi.

Bul aynada jańa bahalar maydanı qosıw ushın [Add] tuymesi jáne onı óshiriw ushın [Remove] tuymesi qollanıladı. Infografikanıń tiykarǵı qásiyetlerin basqarıw ushın oń táreptegi ayrıqshalıqlar panelinen paydalanıw múmkin. Ol jaǵdayda infografikani redaktorlaw ushın zárúr bolǵan barlıq ayrıqshalıqlar bar. Olardan biri bul ChartType bolıp, infografikanıń túrlerin belgilew ushın xızmet etedi. Onıń túrleri tómendegi 12. 10 -suwretde keltirilgen.

8

5- Súwret. Infografikanıń túrleri

Sonıń menen birge, infografikanıń maǵlıwmatları, jazıwları, bahaları, maydanı, baha túrleri, shegaraları menen islew qásiyetleri de bar. Ádetde bul ayrıqshalıqlardı programmalastırıw arqalı programma fragmentlerinde ornatıwǵa paydalanıw programmistke qolaylı esaplanadı. Biraq vizual programmalastırıwdıń múmkinshiliginen paydalanıw ushın bunı da isletiwdi úyreniw kerek.

Funkciyaı grafiklerin dúziw. Infografika komponentaına uyqas túrde funkciya grafigin sızıw usılların kórip shıǵamız. Matematikalıq funkciyalardıń grafiklerin sızıw ushın aldın sol funkciyalardı bir klasqa jaratıp alamız. Bul kóriniste matematikanıń barlıq funkciyaların jaratıp alıw yamasa tikkeley paydalanıw múmkin. Chart komponentasına grafiktı sızıw ushın Form1_Load hádiysesine tómendegishe algoritmdi jazamız. Eger programmanı isletsek, bir 2 funksiyanıń grafigini sızıw múmkinshiligin beredi.

9

6- Súwret. 2 funksiyanıń grafigi.

Visual Basic Power Packs komponentaları hám olardı qollanıw. Bul

komponentalar toparı bólek bolıp, olardı Microsoft Visual Basic Power Packs dep ataydı. Bunı jańa varintların internetten alıw hám ornatıw múmkin.

Tiykarǵı wazıypası formanı bezew ushın qollanıladı, sol sebepli barlıq komponentalarga bar bolǵan hádiyseler ámeldegi ushın.

Bul Microsoft VisualBasic PowerPacks atlar keńisliginde jaylasqan bolıp,

Visual Basic Power Packs elementler ushın klassları bar. Visual Basic Power jıynaqlar elementleri qosımsha Windows formaları elementleri ushın mólsherlengen. Olar daslep bepu l plagin-smaylik retinde isletilgen hám endi Visual Studio Quramına

kiritilgen.

7- Súwret. Visual Basic Power Packs komponentaları.

12.3-keste. Visual Basic Power

Packs komponentaları

 

 

 

 

 

 

 

Kórinisi

 

Komponenta atı

Wazıypası

 

 

 

 

 

 

 

 

PrintForm

Formanı baspadan

 

 

 

shıǵarıwǵa ruxsat

 

 

 

 

 

 

 

 

beriwdi basqaradı

 

 

 

10

 

Соседние файлы в предмете Объектно ориентированное программирование