
- •Вопросы экзамену для студентов 2 курса (4 семестр)
- •Особенности объектно-ориентированного программирования. Понятия: класс, объект, метод, событие.
- •Основные принципы объектно-ориентированного программирования. Характеристика абстрактного класса.
- •Достоинства и недостатки объектно-ориентированного программирования.
- •Характеристика системы программирования Delphi. Историчекские сведения о создании Delphi. Порядок создания приложения в Delphi.
- •Структура проекта в Delphi. Понятие компонента. Палитра компонент. Примеры работы с компонентами Label, Edit.
- •События и их обработка в Delphi (OnClick, OnFormShow, OnKeyPress). Примеры.
- •Операторы безусловного и условного переходов. Составные условия. Оператор выбора варианта (вывод на экран результатов в среде Delphi).
- •Оператор цикла for. Вложенные циклы. Примеры реализации в среде Delphi.
- •Операторы цикла while, repeat.Использование Listbox для вывода результата в среде Delphi. Сочетание циклов и команды ветвления.
- •Создание главного и выплывающего меню. Пример работы с видеофайлами.
- •Одномерные массивы в среде Delphi. Удаление элемента из одномерного массива, вставка элемента в заданную позицию. Использование компонента Stringgrid.
- •Преобразование матрицы в одномерный массив, пересылка одномерного массива в матрицу.
- •1.4 Пересылка элементов одномерного массива в матрицу:
- •Сортировка одномерного массива методом пузырьков.
- •Двумерные массивы в среде Delphi. Описание. Транспонирование матрицы без дополнительных массивов.
- •Двумерные массивы в среде Delphi. Перестановка строк. Вставка строки в матрицу.
- •Различные способы создания простейших графических образов в среде Delphi , вывод готовых фигур, рисунков. Примеры движения фигур по горизонтали, по вертикали, по окружности.
- •Символьные и строковые величины. Процедуры и функции обработки строковых величин, преобразование числовых и стоковых величин. Формирование массива слов из данного предложения.
- •Функции и процедуры пользователя (пример реализации в среде Delphi).
- •Множества. Операции (не менее 6 штук) работы с множеством. Определить количество гласных букв в заданном слове (пример реализации в среде Delphi)..
- •Procedure AssignFile(var f; FileName: String);присвоить имя
- •Использование возможностей среды Delphi для создания педагогических программных средств.
- •30. Обработка одномерного массива на языке c#. Примеры.
- •31. Обработка матрицы на языке c#. Примеры.
- •32.Символы и строки в c#. Примеры.
- •33.Создание структуры в c#. Пример.
- •34. Создание класса в c#. Пример.
- •35. Примеры создания графических изображений в c#.
- •37. Особенности создания простейшего web-браузера.
35. Примеры создания графических изображений в c#.
{
InitializeComponent();
}
float[] x = { 100.78F, 50.12F, 200.99F }; // Массив х-кординат треугольника
float[] y = { 100.45F, 200.77F, 300.18F }; // Массив y-кординат треугольника
private void Form1_Load(object sender, System.EventArgs e)
{
// Задаем размер нашей формы
this.Height = 700;
this.Width = 900;
// Задаем положение pictureBox1, координаты левого верхнего угла относительно формы
this.pictureBox1.Location = new System.Drawing.Point(40, 40);
// Задаем размер pictureBox1
this.pictureBox1.Width = 600;
this.pictureBox1.Height = 500;
// Помещаем кнопку button1 в нижний правый угол формы
this.button1.Left = this.Width - this.button1.Width - 10;
this.button1.Top = this.Height - this.button1.Height-40;
this.button1.Text = "Построить";
}
private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
// Создаем локальную версию графического объекта для PictureBox
Graphics g = e.Graphics;
// Прорисовка отрезков сторон треугольника
g.DrawLine(Pens.Red, x[0], y[0], x[1], y[1]);
g.DrawLine(Pens.Red, x[1], y[1], x[2], y[2]);
g.DrawLine(Pens.Red, x[0], y[0], x[2], y[2]);
}
private void button1_Click(object sender, EventArgs e)
{
pictureBox1.BackColor = Color.White;
pictureBox1.Visible = true;
// Connect the Paint event of the PictureBox to the event handler method.
pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
InitializeComponent();
}
private void Forml_Paint(object sender, PaintEventArgs e)
{
using
(Graphics g = e.Graphics)
{
using (Pen pen = new Pen(Color.Red))
{
g.DrawLine(pen, 0, 0, 200, 100);
g.DrawEllipse(pen, new Rectangle(50, 50, 100, 150));
}
string s = "Sample Text";
Font font = new Font("Arial", 18);
SolidBrush brush = new SolidBrush(Color.Black);
float x = 100.0F;
float у = 20.0F;
g.DrawString(s, font, brush, x, у);
font.Dispose();
brush.Dispose();
}
}
}
}
Графика на c#, масштабируемые изображения
Платформа .NET обеспечивает целый набор пространства имен для поддержки визуализации двумерной графики.
Для рисования мы будем использовать пространство имен Drawing, нам этого достаточно, так как мы будем рисовать простейшие рисунки. Во время рисования следует обратить внимание на следующее, так как некоторые фигуры нам понадобится заливать цветом, то тут важен порядок, обязательно сначала выполнять заливку, а после обводку.
Для рисования мы будем использовать карандаш Pen, точнее статические свойства семейства Pens.
Например:
Pens.Blue;//карандаш синего цвета
Для заливки используем кисть Brush, аналогично будем использовать его статические свойства brushes.
Например:
Brushes.Blue;//кисть синего цвета.
Непосредственно для рисования используются следующие объекты:
Линия:
DrawLine();.// Для рисования необходимы 5 параметров:
1.цвет линии, используем семейство Pens.
2.Координаты верхнего левого угла
3.Координаты нижнего правого угла
Например:
DrawLine(Pens.Black, 100, 100, 500, 500);
Прямоугольник: (не забываем что сначала заливка а потом обаодка)
FillRectangle();Для рисования необходимы 5 параметров:
1.цвет заливки, используем семейство Brushes.
2.Координаты верхнего левого угла
3.Ширина и высота
Например:
FillRectangle(Brushes.Beige, 100, 100, 500, 500);//залили прямоугольную область
DrawRectangle(Pens.Red, 100, 100, 500, 500);// выполнили обводку
Эллипс:
FillEllipse();Для рисования необходимы 5 параметров:
1.цвет заливки, используем семейство Brushes.
2.Координаты верхнего левого угла
3.Ширина и высота
Например:
FillEllipse(Brushes.Beige, 100, 100, 500, 500);//залили прямоугольную область
DrawEllipse(Pens.Red, 100, 100, 500, 500);// выполнили обводку
Сектор эллипса:
FillPie();Для рисования необходимы 7 параметров:
1.Цвет заливки, используем семейство Brushes.
2.Координаты верхнего левого угла
3.Ширина и высота
4.Угол начала сектора
5.Угол конца сектора
Например:
FillPie(Brushes.Beige, 100, 100, 500, 500, 0, 90);//залили прямоугольную область
DrawPie(Pens.Red, 100, 100, 500, 500, 0, 90);// выполнили обводкуМногоугольник:
Многоугольник, строится по массиву тоыек, поэтому сначала нужно создать массив
Point [] tt={new Point(20, 10), new Point(10, 40),new Point(45,100),new Point(50б 80)};
А после рисуем многоугольник
g.DrawPolygon(Pens.Green,tt);
И при необходимости его заливаем
g.FillPolygon(Pens.Green,tt);
Масштабируемое изображение
Все что мы рассмотрели позволяет рисовать графические примитивы на C#. Но есть одно но, если после создания изображения мы попытаемся изменить размер формы, то мы увидим что размер изображения не меняется. А по мере уменьшения формы изображение срезается, то есть ее часть оказывается, как бы за пределами формы и мы его не видим.
Проблема в том что во время масштабирования формы уменьшается не единица измерения(это не возможно в принципе, так как размер формы измеряется в пикселях ), а уменьшается количество пикселей.
Для того чтобы обойти эту проблему нам придется создать свою систему координат. Начало останется там же в верхнем левом углу. А вот единицу измерения мы изменим, мы привяжем ее непосредственно к размерам формы и, тем самым при изменении размеров формы будет меняться и наша единица измерения.
Первое что стоит понимать, мы рисуем только на клиентской части формы, то есть нельзя рисовать на заголовке, меню и т.п.
Приступим:
В константе нам нужно прописать, сколько наших единиц будет по вертикали и по горизонтали.
Допустим я решил что форма представляет поле 10х10, тогда запишем
const int x = 10, y=10;
Далее нам понадобится 2 переменные типа int для хранения координат x и y
Int dx, dy;//переменные глобальные))))
Теперь нам нужно пересчитать наши dx и dy.
dx = (this.ClientSize.Width)/x;
dy = (this.ClientSize.Height)/y;
Делать это придется в 2 случаях:
1.При загрузке формы в событие Load
2.Во время изменения размера формы в событии Resize
Отображение рисунка на форме происходит в событии Paint. Это событие срабатывает автоматически при вызове события Load, а вот при изменении размеров его нужно вызвать вручную при помощи команды Refresh();
Далее в событии Paint рисуем обычными методами, но уже используя новые единици измерения.
Например: нам нужно нарисовать прямую из точки (2,2) в точку (5,5)
Graphics g =e.Graphics;//инициализация графики
g.DrawLine(Pens.Black, 2 * dx, 2 * dy, 5 * dx, 5 * dy);//рисование прямой