Цветовая модель RGB. Случайные числа. Занятие 3

Содержание

Слайд 2

Случайное число. Класс Random.

Для генерации случайных чисел в программе используется класс Random.

Случайное число. Класс Random. Для генерации случайных чисел в программе используется класс
В таблице приведены конструкторы класса Random:

Слайд 3

Некоторые методы класса Random

Некоторые методы класса Random

Слайд 4

Пример «Случайный кружок».

Программа, рисует круг случайным радиусом из интервала (20; 100),

Пример «Случайный кружок». Программа, рисует круг случайным радиусом из интервала (20; 100),
в случайном месте и любым цветом.

Слайд 5

Пример «Случайный кружок».

namespace Случайный_кружок
{
public partial class Form1 : Form
{

Пример «Случайный кружок». namespace Случайный_кружок { public partial class Form1 : Form
int r, x, y;
int fw, fh; // Ширина и высота формы
Random rnd = new Random(); //создается объект класса Random
Pen pen1 = new Pen(Color.Blue);
Graphics gr;
public void krug(int x, int y, int r)
{
pen1.Color = Color.Blue;
gr.DrawEllipse(pen1, x, y, 2 * r, 2 * r);

private void button1_Click(object sender,
EventArgs e)
{ r = rnd.Next(20, 100);
x = rnd.Next(fw - 2 * r); // Следим,
//чтобы кружок не выходил за форму
y = rnd.Next(fh - 2 * r);
krug(x, y, r);
}
public Form1()
{ InitializeComponent();
gr = this.CreateGraphics();
this.BackColor = Color.Aquamarine;
fw = this.Width;//Текущая ширина формы
fh = this.Height;//Текущая высота формы 
}
}
}

Слайд 6

Цикл со счетчиком for.

Цикл for используется, как правило, если известно число повторов

Цикл со счетчиком for. Цикл for используется, как правило, если известно число
цикла:
for (<начальные значения>; <условия работы цикла>; <инкремент>)
{ <тело цикла> }
Цикл for выполняет <тело цикла> до тех пор, пока условие работы цикла не станет равным false. В случае зависания программы (зацикливания) нажмите Shift+F5. Пример использования оператора for :
Ряд кружков. Нарисуйте ряд кружочков (например 10 штук) с радиусом 40:
private void Form1_Paint(object sender, PaintEventArgs e)
{ SolidBrush myBrush = new SolidBrush(Color.Red);
myBrush.Color = Color.Red;
y = 50;
x = 0;
for (int i=1; i<=10; i++)
{ g.FillEllipse(myBrushred, x, y, 2*r, 2*r);
x += 2 * r;
}
}

Слайд 7

Использование цвета. Цветовая модель RGB.

Существует набор системных цветов, которые берутся из структуры

Использование цвета. Цветовая модель RGB. Существует набор системных цветов, которые берутся из
Color.
Примеры:
Color col;
col = Color.Red; // красный
col = Color.Aquamarine; // аквамарин
col = Color.LightGoldenrodYellow; // светлый золотисто-желтый
col = Color.Tomato; // томатный
Иногда в процессе работы программы форма должна перекрашиваться.
Перекрашивание формы программно, например, в зеленый цвет:
public Form1()
{
InitializeComponent();
this.BackColor = Color.Green;

Если понадобится изменить цвет, например, кнопки Button1 на тёмно-бордовый, код будет таким: 
button1.BackColor = Color.Maroon; 

Слайд 8

Цветовая модель RGB.

RGB – это аддитивная цветовая модель, которая синтезирует цвета, используя

Цветовая модель RGB. RGB – это аддитивная цветовая модель, которая синтезирует цвета,
смешивание трёх основных цветов (Красного – Red, Зеленого – Green, Синего – Blue) с чёрным, вследствие чего получаются новые цвета и оттенки. Зависит получаемый цвет от интенсивности этих трёх основных цветов. Если смешать Красный, Зеленый и Синий в максимальной насыщенности, получится белый цвет. Если не смешивать их, то остаётся чёрный.

Слайд 9

Создание цвета. Метод Color.Argb

Можно создавать свои цвета, задавая интенсивность каждого цвета с

Создание цвета. Метод Color.Argb Можно создавать свои цвета, задавая интенсивность каждого цвета
помощью метода Color.FromArgb. Первый аргумент этого метода задает интенсивность красного, второй – интенсивность зеленого, и последний – интенсивность голубого цвета. Интенсивность в числовой форме для удобства применения задается числами от 0 (минимальная интенсивность) до 255 (максимальная интенсивность). Чтобы закрасить фон формы в чёрный цвет, используя данный метод, надо написать вот такую строку:
public Form1()
{
InitializeComponent();
this.BackColor = Color.FromArgb(0, 0, 0);
}

Примеры
Color col;
col = Color.FromArgb(23, 56, 78);
Или
col = Color.FromRgb(0, 0, 0); // черный
col = Color.FromRgb(0, 255, 0); // зеленый
col = Color.FromRgb(255, 0, 0); // красный
col = Color.FromRgb(0, 0, 255); // синий
col=Color.FromRgb(255, 255, 0); //желтый
col=Color.FromRgb(255, 0, 255);
//фиолетовый (magenta)
col = Color.FromRgb(0, 255, 255); // циан
col=Color.FromRgb(255, 255, 255); //белый

Слайд 10

Модель RGB в виде трехмерного куба.

Цветовым пространством модели RGB является единичный куб

Модель RGB в виде трехмерного куба. Цветовым пространством модели RGB является единичный
в трехмерной системе координат. На рисунке изображен куб и трехмерная система координат. На главной диагонали куба получаются серые цвета от черного до белого. Главная диагональ идет из точки с координатами (0,0,0) в точку с координатами (1, 1, 1). Начало координат на рисунке (0, 0, 0) – черный цвет, точка с координатами (1, 1, 1) имеет белый цвет. Главная диагональ куба характеризуется равным вкладом трех базовых цветов: r – красный, g – зеленый и b – синий.

Слайд 11

Задание цвета случайным образом

byte r, g, b;
. . .
Random

Задание цвета случайным образом byte r, g, b; . . . Random
rnd = new Random();
Brush br1= new Brush(Color.Black); // При создании кисти
// используем любой цвет
r= rnd.Next(15;256); // Отступили от нуля на 15,
// чтобы избежать темных оттенков
g= rnd.Next(15;256);
b= rnd.Next(15;256);
br1.Color= Color.FromArgb(r,g,b);
. . .

Слайд 12

Пример. Нарисуем длинную полоску, закрашенную градиентным образом от темно-зеленого до светло-зеленого.

namespace Градиент1
{

Пример. Нарисуем длинную полоску, закрашенную градиентным образом от темно-зеленого до светло-зеленого. namespace
public partial class Form1 : Form
{
int y, a, r, g, b;
int x = 0;
SolidBrush br1 = new SolidBrush(Color.Black);
private void button1_Click(object sender,
EventArgs e)
{
drawpole();
}

Слайд 13

Пример. Продолжение.

int n = 50, h = 50; // 50 полосок

Пример. Продолжение. int n = 50, h = 50; // 50 полосок
Graphics gr;
public void drawpole()
{
a = 5; // Шаг или ширина одного
// прямоугольника
r = 0; // Оттенки красного цвета
b = 0; // Оттенки синего цвета
y = 100;

for (int i=1; i<=n; i++)
{ g = i*a; // Оттенки зеленого цвета
x +=a;
br1.Color = Color.FromArgb(r, g, b);
gr.FillRectangle(br1, x, y, a, h); 
}
}
public Form1()
{ InitializeComponent();
gr = this.CreateGraphics();
}
}
}

Слайд 14

Прозрачность.

В одном из так называемых перегруженных вариантов метода FromArgb (то есть с

Прозрачность. В одном из так называемых перегруженных вариантов метода FromArgb (то есть
четырьмя входными параметрами) первый параметр задает прозрачность объекта. Прозрачность задается от 0 до 255. Совсем прозрачный соответствует числу 255. Например:
Color col;
col = Color.FromArgb(127, 23, 56, 78);
В этом примере создается голубовато-серый цвет с примерно 50% прозрачностью.
Можно создать также цвет с прозрачностью на основе цвета, имеющегося в структуре Color, например:
Color col;
col = Color.FromArgb(128, Color.Tomato);