Графика в C# - Учителско портфолио · 2018. 5. 13. ·...
Transcript of Графика в C# - Учителско портфолио · 2018. 5. 13. ·...
![Page 1: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/1.jpg)
Графика в C#ВЪВЕДЕНИЕ В ГРАФИКАТА НА C#
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
![Page 2: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/2.jpg)
Компютърна графикаМонитор разделителна способност – dpi (dot pen inch) - количество пиксели на инч
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
19-инчов екран (4:3): 1280 x 1024 пиксела20-инчов екран (стандартно съотношение): 1600 x 1200 пиксела22-инчов екран 16:9): 1680 x 1050 пиксела24-инчов екран (широкоекранен): 1900 x 1200 пиксела
![Page 3: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/3.jpg)
Графични форматиРАСТЕРНИ - BITMAP
Всеки пиксел има цвят
Обемисти файлове
Paint – bmp,
ВЕКТОРНИ - WMF /WINDOWS METAFILE FORMAT/
Oтделни графични елементи различни геометрични фигури, представени с математическо описание.
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
![Page 4: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/4.jpg)
Създаване на Windows приложение с графика using System.Drawing;
метод за обработка на събитието OnPaint
protected override void OnPaint(PaintEventArgs e)
{ Graphics g = e.Graphics; }
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
![Page 5: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/5.jpg)
Чертожно полеДЕКАРТОВА КООРДИНАТНА СИСТЕМА ЕКРАННА КООРДИНАТНА СИСТЕМА
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
(0,0)c
r
![Page 6: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/6.jpg)
Реално чертожно поле на формата
WindowsState - размер на формата
Текущи стойности на полето ClientSize.Width - ширина
ClientSize.Height - височина на чертожното поле
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
![Page 7: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/7.jpg)
Създаване на писалка Синтаксис
Pen p = new Pen(<цвят>, <дебелина>);
Примери
Pen p = new Pen(Color. Red,1);
Pen p = new Pen(Color.FromArgb(49,226,29),2);с избор на интензитет /0-255/ RGB
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
![Page 8: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/8.jpg)
Фон на чертожното поле - BackColor
g.Clear(Color.Red);
g.Clear(Color.FromArgb(20,140,60));
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
![Page 9: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/9.jpg)
Генериране на случаен цвят на форматаprotected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
int a = 255,freq=10;
Random c = new Random();
for (int i = 1; i <= 40; i++)
{ g.Clear(Color.FromArgb(c.Next()%a,c.Next()%a,c.Next()%a));
System.Threading.Thread.Sleep(1000 / 10);
}
}
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
Методът забавя изпълнението на следващия оператор за времето в
милисекунди.
![Page 10: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/10.jpg)
Изчертаване на права линия - метод DrawLine Синатаксис
void DrawLine(Pen p, int x1, int y1, int x2, int y2)
Пример:
Pen p = new Pen(Color.Black, 0);
g.DrawLine(p, 0, 0, 15, 15);
g.DrawLine(p, 15, 15, 0, 0);
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
Еднакъв резултат
![Page 11: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/11.jpg)
Изчертайте равностранен триъгълник
int x1=200, y1=500, side=200;int x2 = x1 + side, y2 = y1;int x3 = (x1 + x2) / 2;int h = (int)(side * Math.Sqrt(3) / 2); y3 = y1 - h;
g.DrawLine(p, x1, y1, x2, y2);g.DrawLine(p, x2, y2, x3, y3);g.DrawLine(p, x3, y3, x1, y1);
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
(x1,y1)
side
side/2 side/2
side
(x2, y2)
(x3,y3)
side. √3 / 2
![Page 12: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/12.jpg)
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen p = new Pen(Color.Black, 2);
int side=200, x1=200, y1=500, x2, y2, x3, y3;
x2 = x1 + side; y2 = y1; x3 = (x1 + x2) / 2;
int h = (int)(side * Math.Sqrt(3) / 2);
y3 = y1 - h;
g.DrawLine(p, x1, y1, x2, y2);
g.DrawLine(p, x2, y2, x3, y3);
g.DrawLine(p, x3, y3, x1, y1);
}
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
![Page 13: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/13.jpg)
Задача 1. Eкспериментирайте с програмния код на решената в урока задача, катопроменяте големината на страната в side и началното положение на координатите х1 и у1. Променя ли се при това размерът на триъгълника и неговото местоположение? А остава ли триъгълникът равностранен?
Задача 2. Какво трябва да се промени в кода на тази програма, за да се изчертаетриъгълникът обърнат надолу?
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
![Page 14: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/14.jpg)
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen p = new Pen(Color.Black, 2);
int side = 200, x1, y1, x2, y2, x3, y3;
for ( x1 = 0, y1 = 500; x1 <= 800; x1 += 20, y1 -= 10)
{
x2 = x1 + side; y2 = y1;
x3 = (x1 + x2) / 2;
int h = (int)(side * Math.Sqrt(3) / 2);
y3 = y1 - h;
g.DrawLine(p, x1, y1, x2, y2);
g.DrawLine(p, x2, y2, x3, y3);
g.DrawLine(p, x3, y3, x1, y1);
}
}
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
![Page 15: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/15.jpg)
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
protected override void OnPaint(PaintEventArgs e){
Graphics g = e.Graphics;Pen p = new Pen(Color.Black, 2);int side = 200, x1,y1=500, x2, y2=500, x3, y3;for (x1 = 0; x1 <= 800; x1 += 20){
x2 = x1 + side; x3 = (x1 + x2) / 2;int h = (int)(side * Math.Sqrt(3) / 2);y3 = y1 - h;g.DrawLine(p, x1, y1, x2, y2);g.DrawLine(p, x2, y2, x3, y3);g.DrawLine(p, x3, y3, x1, y1);
}}
![Page 16: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/16.jpg)
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
protected override void OnPaint(PaintEventArgs e){
Graphics g = e.Graphics;Pen p = new Pen(Color.Black, 2);int side = 200, x1,y1=500, x2, y2=500, x3, y3;for (x1 = 0; x1 <= 800; x1 += side){
x2 = x1 + side; x3 = (x1 + x2) / 2;int h = (int)(side * Math.Sqrt(3) / 2);y3 = y1 - h;g.DrawLine(p, x1, y1, x2, y2);g.DrawLine(p, x2, y2, x3, y3);g.DrawLine(p, x3, y3, x1, y1);
}}
![Page 17: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi](https://reader036.fdocuments.net/reader036/viewer/2022062415/5fbf2ab92b150400b42e9b38/html5/thumbnails/17.jpg)
Изчертайте 10 хоризонтални линии с дължина 500, разположениплътно едно до друга, със случайна дебелина и цвят.
ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА
Graphics g = e.Graphics;Random r = new Random();int h = 100, red, green, blue;for (int i = 1; i <= 10; i++){ int w = r.Next() % 20+10;red = r.Next() % 256;green = r.Next() % 256;blue = r.Next() % 256;Pen p = new Pen(Color.FromArgb(red,green,blue),w);g.DrawLine(p, 100, h, 600, h);h = h + w;