Выполнение индивидуального задания. Добавте в приведенный графический редактор свои функции в соотвествии с вариантом
Добавте в приведенный графический редактор свои функции в соотвествии с вариантом.
1) Расширьте приложение путем добавления возможности выбора пользователем цвета и велечины кисти.
2) Разработайте функцию, добавляющую на изображение 1000 точек с координатами заданными случайным образом. Цвет, также, задается случайным образом.
3) Создайте функцию, переводящую изображение в черно-белый формат.
4) Разработайте функцию, оставляющую на изображении только один из каналов (R,G,B). Канал выбирается пользователем.
5) Создайте функцию, выводящую на изображение окружность. Центр окружности совпадает с центром изображения. Все точки вне окружности закрашиваются черным цветом. Все точки внутри окружности остаются неизменными. Радиус окружности задается пользователем.
6) Создайте функцию, выводящую на изображение треугольник. Все точки вне треугольника закрашиваются синим цветом. Все точки внутри треугольника остаются неизменными.
7) Создайте функцию, выводящую на изображение ромб. Все точки вне ромба переводятся в градации серого цвета. Все точки внутри ромба закрашиваются зеленым цветом.
8) Разработайте функцию, которая выводит на изображение черные горизонтальные линии для каждой четной строки.
9) Разработайте функцию, которая выводит на изображение черные вертикальные линии для каждого нечетного столбца.
10) Создайте функцию, разбивающую изображение на четыре равные части. В каждой оставте значение только одного канала R, G и B, а в четвертой выведите градации серого цвета.
11) Разработайте функцию, заменяющую все точки синего цвета на точки красного цвета.
12) Создайте функцию, инвертирующую изображение в градациях серого цвета в негатив.
13) Создайте функцию, изменяющую яркость изображения. Путем прибавления или уменьшения заданной пользователем величины к каждому каналу.
14) Создайте функцию, переводящую изображение в черно-белый формат в соответсвии с пороговым значением, которое ввел пользователь.
15) Разработайте функцию для создания эффекта мозаики. При этом изображения разбивается на прямоугольные фрагменты, в каждом из которых выбирается цвет средней точки и этим же цветом закрашивается весь фрагмент.
16) Разработайте функцию, разбивающую изображение на фрагменты, в каждом из которых остается только один из каналов (R, G, B).
ЛАБОРАТОРНАЯ РАБОТА 12. МЕТОДЫ
Цель лабораторной работы: научиться работать с методами, написать программу с использованием методов.
Общие понятия
Метод – это элемент класса, который содержит программный код. Метод имеет следующую структуру:
[атрибуты] [спецификторы] тип имя ([параметры])
{
Тело метода;
}
Атрибуты – это особые указания компилятору на свойства метода. Атрибуты используются редко.
Спецификаторы – это ключевые слова, предназначенные для разных целей, например:
· Определяющие доступность метода для других классов:
o private – метод будет доступен только внутри этого класса
o protected – метод будет доступен также дочерним классам
o public – метод будет доступен любому другому классу, который может получить доступ к данному классу
· Указывающие доступность метода без создания класса
· Задающие тип
Тип определяет результат, который возвращает метод: это может быть любой тип, доступный в C#, а также ключевое слово void, если результат не требуется.
Имя метода – это идентификатор, который будет использоваться для вызова метода. К идентификатору применяются те же требования, что и к именам переменных: он может состоять из букв, цифр и знака подчёркивания, но не может начинаться с цифры.
Параметры – это список переменных, которые можно передавать в метод при вызове. Каждый параметр состоит из типа и названия переменной. Параметры разделяются запятой.
Тело метода – это обычный программный код, за исключением того, что он не может содержать определения других методов, классов, пространств имён и т. д. Если метод должен возвращать какой-то результат, то обязательно в конце должно присутствовать ключевое слово return с возвращаемым значением. Если возвращение результатов не нужно, то использование ключевого слова return не обязательно, хотя и допускается.
Пример метода, вычисляющего выражение:
public double Calc(double a, double b, double c)
{
if (a > b)
return Math.Sin(a) * Math.Cos(b);
else
{
double k = Math.Tan(a * b);
return k * Math.Exp(c / k);
}
}
Перегрузка методов
Язык C# позволяет создавать несколько методов с одинаковыми именами, но разными параметрами. Компилятор автоматически подберёт наиболее подходящий метод при построении программы. Например, можно написать два отдельных метода возведения числа в степень: для целых чисел будет применяться один алгоритм, а для вещественных – другой:
/// <summary>
/// Вычисление X в степени Y для целых чисел
/// </summary>
private int Pow(int X, int Y)
{
int b = 1;
while (Y != 0)
if (Y % 2 == 0)
{
Y /= 2;
X *= X;
}
else
{
Y--;
b *= X;
}
return b;
}
/// <summary>
/// Вычисление X в степени Y для вещественных чисел
/// </summary>
private double Pow(double X, double Y)
{
if (X != 0)
return Math.Exp(Y * Math.Log(Math.Abs(X)));
else if (Y == 0)
return 1;
else
return 0;
}
Вызывается такой код одинаково, разница лишь в параметрах – в первом случае компилятор вызовет метод Pow с целочисленными параметрами, а во втором – с вещественными:
Pow(3, 17);
Pow(3.0, 17.0);