Lekciya 12
.pdf12-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 |
|