Графика в c# - Учителско портфолио · 2018. 5. 13. ·...

17
Графика в C# ВЪВЕДЕНИЕ В ГРАФИКАТА НА C# ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА

Upload: others

Post on 17-Aug-2020

21 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi

Графика в C#ВЪВЕДЕНИЕ В ГРАФИКАТА НА C#

ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА

Page 2: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi

Компютърна графикаМонитор разделителна способност – 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

Графични форматиРАСТЕРНИ - BITMAP

Всеки пиксел има цвят

Обемисти файлове

Paint – bmp,

ВЕКТОРНИ - WMF /WINDOWS METAFILE FORMAT/

Oтделни графични елементи различни геометрични фигури, представени с математическо описание.

ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА

Page 4: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi

Създаване на Windows приложение с графика using System.Drawing;

метод за обработка на събитието OnPaint

protected override void OnPaint(PaintEventArgs e)

{ Graphics g = e.Graphics; }

ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА

Page 5: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi

Чертожно полеДЕКАРТОВА КООРДИНАТНА СИСТЕМА ЕКРАННА КООРДИНАТНА СИСТЕМА

ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА

(0,0)c

r

Page 6: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi

Реално чертожно поле на формата

WindowsState - размер на формата

Текущи стойности на полето ClientSize.Width - ширина

ClientSize.Height - височина на чертожното поле

ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА

Page 7: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi

Създаване на писалка Синтаксис

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

Фон на чертожното поле - BackColor

g.Clear(Color.Red);

g.Clear(Color.FromArgb(20,140,60));

ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА

Page 9: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi

Генериране на случаен цвят на формата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

Изчертаване на права линия - метод 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

Изчертайте равностранен триъгълник

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

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

Задача 1. Eкспериментирайте с програмния код на решената в урока задача, катопроменяте големината на страната в side и началното положение на координатите х1 и у1. Променя ли се при това размерът на триъгълника и неговото местоположение? А остава ли триъгълникът равностранен?

Задача 2. Какво трябва да се промени в кода на тази програма, за да се изчертаетриъгълникът обърнат надолу?

ИНФОРМАТИКА - 9 КЛАС, ВИДОЛОВА

Page 14: Графика в C# - Учителско портфолио · 2018. 5. 13. · Компютърна графика Монитор разделителна способност –dpi

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

ИНФОРМАТИКА - 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

ИНФОРМАТИКА - 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

Изчертайте 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;