II-BOB. C# dasturlash muhitida uch o`lchamli dodekaedrni koordinatalarda aylantirish
2.1. uch o`lchamli dodekaedrni koordinatalarda aylantirish
Microsoft Visual Studio dasturini ishga tushiring. Ushbu o'quvvqo'llanma 2012 yilgi versiyaga asoslangan. Grafika bilan ishlashvalgoritmi boshqa versiyalarga o'xshaydi. Yangi loyiha yaratish uchun yuqori chap burchakdagi "FILE" menyusiga o'ting va rasmda ko'rsatilgandek "New" -> "Project" (yoki Ctrl + Shift + N tugmalarini bosish orqali) ni tanlang.
Ko'rsatilgan oynada yaratilishi kerak bo'lgan ob'ektlardan tanlang- Visual C # uchun Windows Forms Application.
Loyihani yaratgandan so'ng, ekranda Form1 va Elementlar panelini ko'rasiz. Ushbu paneldagi moslamalarni tanlang: Tugma - tugma, PictureBox - rasm chizish uchun maydon, va ushbu moslamalarni avval yaratilgan shaklda joylashtiring. Formada PictureBox ob'ektini tanlab, uning xususiyatlarini Xususiyatlar panelida sozlashingiz mumkin. Masalan: "Layout" -> "Size" yorlig'ida siz ob'ektning aniq hajmini piksel bilan belgilashingiz mumkin.
Width - ширина по X ;
Height - высота по Y ;
Form1.cs faylida usul yaratiladi va quyidagicha bo'ladi:
private void button1_Click(object sender, EventArgs e)
{
}
"{}" Jingalak qavslari orasida siz tugmani bosish hodisasida bajariladigan kodni yozishingiz kerak
.
Grafika. .NET doirasi ko'rsatishni qo'llab-quvvatlash uchun nom maydonlarining to'liq to'plamini taqdim etadi ikki o'lchovli grafikalar. Chizish uchun biz Drawing nom maydonidan foydalanamiz, chunki bu biz uchun etarli, chunki biz eng oddiy rasmlarni chizamiz. Chizish paytida e'tibor bering quyidagilar, chunki ba'zi shakllarni rang bilan to'ldirishimiz kerak, buyurtma bu erda muhim, avval to'ldirishni, so'ngra qon tomirini to'ldirishni unutmang. Chizish uchun biz qalamdan, aniqrog'i, statik xususiyatlardan foydalanamiz Qalamlar oilasidan
Masalan:
Cho'tkalar Moviy; // ko'k cho'tka.
To'g'ridan-to'g'ri chizish uchun quyidagi ob'ektlardan foydalaniladi:
Qator:
DrawLine ();. // Chizish uchun 5 ta parametr talab qilinadi:
1. chiziq rangi, Qalamlar oilasidan foydalaning.
2. Yuqori chap burchakning koordinatalari
3. Pastki o'ng burchakning koordinatalari
Masalan:
DrawLine (Qalamchalar, Qora, 100, 100, 500, 500);
To'rtburchak: (avval to'ldirishni, keyin ikkalasini ham unutmang)
FillRectangle (); Chizish uchun 5 ta parametr kerak:
1. rangni to'ldiring, Brushes oilasidan foydalaning.
2. Yuqori chap burchakning koordinatalari
3. Kenglik va balandlik
Masalan:
FillRectangle (Brushes, Bej, 100, 100, 500, 500); // to'rtburchaklar
maydonni to'ldirgan
DrawRectangle (qalamlar, qizil, 100, 100, 500, 500); // zarba
Ellips: FillEllipse (); Chizma 5 parametrni talab qiladi: 1. Rangni to'ldiring, Brushes oilasidan foydalaning. 2. Yuqori chap burchakning koordinatalari 3. Kenglik va balandlik Masalan: FillEllipse (Brushes. Bej, 100, 100, 500, 500); // to'rtburchaklar maydonni to'ldirdi DrawEllipse (Pens. Red, 100, 100, 500, 500); // zarbani bajargan Ellips sektori: FillPie (); chizish uchun 7 parametr talab qilinadi: 1. Rangni to'ldiring, Brushes oilasidan foydalaning. 2. Yuqori chap burchakning koordinatalari 3. Kenglik va balandlik 4. Sektorni boshlash burchagi 5. Sektorning so'nggi burchagi Masalan: FillPie (Brushes. Bej, 100, 100, 500, 500, 0, 90); // to'rtburchaklar maydonni to'ldirdi DrawPie (Qizil qalamchalar, 100, 100, 500, 500, 0, 90); // Strok ko'pburchagi: Ko'pburchak toyek massividan qurilgan, shuning uchun avval siz qator yaratishingiz kerak
Point [] tt = {yangi nuqta (20, 10), yangi nuqta (10, 40), yangi nuqta
(45,100), yangi nuqta (50b 80)};
Va keyin ko'pburchakni chizish
g.DrawPolygon (Qalamlar, Yashil, tt);
Va agar kerak bo'lsa, uni to'ldiring
g.FillPolygon (qalamlar. Yashil, tt);
Miqyoslanadigan rasm
Biz ko'rib chiqqan barcha narsalar C # da grafik ibtidoiylarni chizishga imkon beradi. Ammo bitta narsa bor, ammo agar shunday bo'lsa rasmni yaratgandan so'ng, biz shaklning o'lchamini o'zgartirishga harakat qilamiz, shunda biz uning o'lchamini bilib olamiz tasvir o'zgarmaydi. Va shakli pasayganda, tasvir kesiladi, ya'ni uning bir qismi u chiqadi, go'yo formaning tashqarisida va biz uni ko'rmayapmiz. Muammo shundaki, shaklni masshtablash paytida o'lchov birligi kamaymaydi (bu printsipial ravishda mumkin emas, chunki shaklning o'lchami piksel bilan o'lchanadi), lekin kamayadi piksellar soni. Ushbu muammoni hal qilish uchun biz o'z koordinatalar tizimini yaratishga majbur bo'lamiz. Boshlang yuqori chap burchakda o'sha joyda qoladi. Ammo biz o'lchov birligini o'zgartiramiz, biz uni bog'laymiz to'g'ridan-to'g'ri shakl o'lchamlariga va shu bilan shakl o'lchamlari o'zgartirilganda, bizning o'lchov birligimiz ham farq qiladi. Tushunadigan birinchi narsa shundaki, biz faqat shaklning mijoz tomoniga chizamiz, ya'ni qila olmaymiz
sarlavha, menyu va boshqalarga rasm chizish.
Misol 1. Tugmani bosganingizda shakllar paydo bo'ladi (kvadrat ellips, chiziq)
private void button2_Click(object sender, EventArgs e) { Graphic g this.CreateGraphics(); // Подготавливаем перо, рисующе красную линию толщиной 3 пикселя Pen redPen = ne Pen(Color.Red, 3); // С помощью пера рисуем прямую линию прямоугольник и эллипс g.DrawLine(redPen, 140, 170, 140, 230) g.DrawRectangle(redPen, 50, 60, 50, 60); g.DrawEllipse(redPen, 150 100, 100, 60); g.Dispose(); // Очистка } Пример 2. Ветка параболы private void button2_Click(object sender, EventArgs e) { Graphics gr this.CreateGraphics(); Pen myPen = new Pen(Color.BlueViolet); int k 100; float xmin = 0, xmax = 2, ymin = 0, ymax = 4; float xstep = (xma - xmin) / k; float kx = this.Width / xmax, ky = this.Height / ymax; floa x1 = xmin, y1 = x1 * x1, x2, y2; for (int i = 0; i < k; i++) { x2 = x1 xstep; y2 = x2 * x2; gr.DrawLine(myPen, kx * x1, this.Height - ky * y1 kx * x2, this.Height - ky * y2); x1 = x2; y1 = y2; } } Пример 3 «Летящая окружность» private void button1_Click(object sender EventArgs e) { Graphics g = this.CreateGraphics(); Pen redPen = ne Pen(Color.Red, 3); // красное перо for (int i = 0; i < 100; i+=1) / координаты центра изменяются { g.DrawEllipse(redPen, i+100, i+40 10, 10);/ рисуем эллипс for (int j = 0; j < 10000000; j++) //пусто цикл для задержки времени { } g.Clear(Color.White); //стирае нарисованный эллипс } g.Dispose();
private void button2_Click(object sender, EventArgs e) { Graphic gr = this.CreateGraphics();
Pen myPen = new Pen(Color.BlueViolet) int k = 100; float xmin = 0, xmax = 2, ymin = 0, ymax = 4; floa xstep = (xmax - xmin) / k; float kx = this.Width / xmax, ky = this.Heigh / ymax;
float x1 = xmin, y1 = x1 * x1, x2, y2; for (int i = 0; i < k; i++) { x2
= x1 + xstep; y2 = x2 * x2; gr.DrawLine(myPen, kx * x1, this.Height -
ky * y1, kx * x2, this.Height - ky * y2) x1 = x2; y1 = y2; } } Пример 3. «Летящая окружность» privat void button1_Click(object sender, EventArgs e) { Graphics g =
this.CreateGraphics() Pen redPen = new Pen(Color.Red, 3); // красное перо for (int i = 0 i < 100; i+=1) // координаты центра изменяютс { g.DrawEllipse(redPen, i+100, i+40, 10, 10);// рисуем эллипс for (int = 0; j < 10000000; j++) //пустой цикл для задержки времени { g.Clear(Color.White); //стираем нарисованный эллипс } g.Dispose();
Vazifa 1. Kardan odamni chizish (uchta to'ldirilgan to'p, buru sabzi, boshidagi shapka)
Vazifa 2. Dasturni jadval bilan yakunlang. Dastur
parabola y = a * x (ikkita shox bilan) va parametrni chizish kerak
Matn maydonidan o'qilgan "A". (O'qlarni ko'rsatish maqsadga
muvofiqdir koordinatalar)
Vazifa 3. Uchayotgan narsaning effektini yarating
shaklning chetiga yoki boshqa shaklga uchib, undan uchib ketadi.
Vazifa 4. Yomg'ir yoki miltillovchi yulduzlar ta'sirini yarating
osmon. (shakllar paydo bo'ladi va tasodifiy yo'qoladi)
Vazifa 5. Sichqoncha tugmachasini siljitish va bosishda u chiziladi
chiziq.
Do'stlaringiz bilan baham: |