close

Вход

Забыли?

вход по аккаунту

?

Laba 5

код для вставкиСкачать
Національний технічний університет України
"Київський політехнічний інститут"
Факультет інформатики та обчислювальної техніки
Кафедра автоматики та управління в технічних системах
Лабораторна робота № 5
по дисципліні "Основи комп'ютерної графіки"
Тема: "Побудова галтелі з N-кутами"
Виконав:
студент групи ІА-34
Литвиненко Микита Дмитрович
Дата здачі: ___________
Захищено з балом: ___________Перевірила:
асист. кафедри АУТС Хмелюк Марина Сергіївна
Київ 2013
Завдання:
Написати універсальну програму, яка будує галтель з будь-якої кількістю кутів.
Теоретичні відомості:
Багатокутник - це замкнута фігура з трьома або більше сторонами, утвореними відрізками прямих. Наприклад, трикутник - це багатокутник з трьома сторонами, прямокутник - багатокутник з чотирма сторонами, а п'ятикутник - це багатокутник з п'ятьма сторонами.
Щоб намалювати багатокутник, будуть потрібні об'єкти Graphics і Pen, а також масив об'єктів Point. У об'єкта Graphics є метод DrawPolygon. Масив об'єктів Point містить точки, котрі повинні бути з'єднані відрізками прямих.
Point point1 = new Point(50, 50);
Point point2 = new Point(500, 50);
Point point3 = new Point(500, 500);
Point point4 = new Point(50, 500);
Point[] Points = {point1, point2, point3, point4};
gr.DrawPolygon(RedPen, Points);
Дуга - це частина еліпса. Щоб намалювати дугу, потрібно викликати метод DrawArc об'єкта Graphics. Параметри метода DrawArc співпадають з параметрами методу DrawEllipse за тим виключенням, що методу DrawArc потрібні значення початкового кута і кутового розміру дуги.
myGraphics.DrawArc(myPen, 325, 50, 150, 75, -90, 180);
myGrahpics.DrawEllipse(myPen, x1, y1, weight, height);
В даній роботі, зображення буде будуватися за допомогою кривих Безьє. Щоб побудувати її потрібно викликати метод DrawBezier. Який в якості параметрів приймає: об'єкт Pen, та точки(початок кривої, першу та другу опорні точки, кінець кривої)
gr.DrawBezier(pen, pointm[n - 1], point_v[0], point_v[0], pointm[0]);
Лістинг програми:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Laba5
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
int n;
bool click = false;
private void MainForm_Paint(object sender, PaintEventArgs e)
{
if (click == true)
{
//Радиус окружности
int R = this.ClientSize.Height / 3;
//Центр окружности
int CX = this.ClientSize.Width / 2;
int CY = this.ClientSize.Height / 2;
//Текущие координаты вершин многоугольника
int X, Y;
//Массив вершин
Point[] point_v = new Point[n + 1];
//Массив средин сторон многоугольника
Point[] point_с = new Point[n + 1];
//Пересчёт координат опорных точек (о.п.т.1 == о.п.т.2)
for (int i = 0; i <= n - 1; i++)
{
X = CX + (int)(R * Math.Cos(2 * i * Math.PI / n));
Y = CY + (int)(R * Math.Sin(2 * i * Math.PI / n));
point_v[i] = new Point(X, Y);
point_v[n] = new Point(point_v[0].X, point_v[0].Y);
}
//Пересчёт массива концов кривых
for (int i = 0; i <= n - 1; i++)
{
point_с[i].X = (point_v[i].X + point_v[i + 1].X) / 2;
point_с[i].Y = (point_v[i].Y + point_v[i + 1].Y) / 2;
}
MakePicture(point_v, point_с, n);
}
}
//Отрисовка фигуры
private void MakePicture(Point[] point_v, Point[] point_с, int n)
{
Graphics gr = CreateGraphics();
gr.Clear(Color.LightGray);
Pen pen = new Pen(Color.IndianRed, 5);
for (int i = 0; i <= n - 1; i++)
{
if (i == n - 1)
gr.DrawBezier(pen, point_с[n - 1], point_v[0], point_v[0], point_с[0]);
else
gr.DrawBezier(pen, point_с[i + 1], point_v[i + 1], point_v[i + 1], point_с[i]);
}
}
//Кнопочки
private void btnArt_Click(object sender, EventArgs e)
{
n = Convert.ToInt16(textBox1.Text);
click = true; }
private void btnExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
Результат програми:
Висновки:
В ході лабораторної роботи я дізнався, що таке галтель та створив універсальну програму, яка малює галтель з заданою кількістю кутів.
Документ
Категория
Рефераты
Просмотров
38
Размер файла
32 Кб
Теги
laba
1/--страниц
Пожаловаться на содержимое документа