Программирование на C#

Автор работы: Пользователь скрыл имя, 29 Января 2013 в 10:53, курсовая работа

Описание работы

Написать программу, рисующую фигуру по заданным точкам и координатам. Построить алгоритм нахождения внутренних линий, на основе которого обвести внутренние треугольники другим цветом.

Файлы: 1 файл

курсач язпр.docx

— 268.44 Кб (Скачать файл)

Федеральное Государственное  Бюджетное Общеобразовательное  Учреждение Высшего Профессионального  Образования

Дальневосточный Государственный  Университет Путей Сообщения

 

 

 

Кафедра: «Информационные Технологии и Системы»

 

 

 

 

Курсовая работа

На тему: «Программирование на C#»

090900.62 гр.21Б

 

 

 

 

 

 

 

 

Выполнил: Cвирин М.В.

Проверил: Водолажский А.А.

 

Хабаровск-2012

Задание

Написать программу, рисующую фигуру по заданным точкам и координатам. Построить алгоритм нахождения внутренних линий, на основе которого обвести внутренние треугольники другим цветом.

Геометрияобласти:

 

 

 

 

Входные данные:

Координаты

6

240;80

160;200

320;200

80;320

240;320

400;320

Узлы

4

0;1;2

3;4;1

4;2;1

5;2;4

 

 

 

Выходные данные:

Координаты внутреннего треугольника 
156;163

302;316

156;163

 

Узлы внутреннего треугольника

1;2

4;2

1;4

 

 

 

Текст программы

Класс Mesh

using System;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Windows.Forms;

using System.IO;

 

namespaceКурсовая

{

Class Mesh

    {

Public int[,] mesh = null;

Int CountElem = 0;

Public int[,] Read()

        {

string Name = @"C:\Users\Cheburashka\Documents\Visual Studio 2010\Projects\Курсовая\Узлы.txt";

StreamReader file = newStreamReader(Name);

string line = file.ReadLine();

CountElem = int.Parse(line);

mesh = newint[CountElem, 3];

int k = 0;

for (line = file.ReadLine(); line != null; line = file.ReadLine())

            {

              string[] elem = line.Split(';');

              for (int i = 0; i <elem.Length; i++)

                {

                  mesh[k, i] = int.Parse(elem[i]);

                }

              k++;

           }

          file.Close();

          return mesh;

        }

Public int[,] koor = null;

Public int[,] Read_1()

        {

         string Name = @"C:\Users\Cheburashka\Documents\Visual Studio                   2010\Projects\Курсовая\Координаты.txt";

         StreamReader file = newStreamReader(Name);

         string line = file.ReadLine();

         CountElem = int.Parse(line);

         koor = newint[CountElem, 2];

         int k = 0;

         for (line = file.ReadLine(); line != null; line = file.ReadLine())

            {

 

             string[] elem = line.Split(';');

             for (int i = 0; i <elem.Length; i++)

                {

                 koor[k, i] = int.Parse(elem[i]);

                }

                K++;

            }

          file.Close();

          return koor;

       }

    }

}

 

Класс Line

using System;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Windows.Forms;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

 

namespace Курсовая

{

classLine

    {

Public int a, b;

public Line()

        {

        }

public Line(int A, int B)

{

            a = A;

            b = B;

        }

    }

}

 

Класс Form1

 

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Windows.Forms;

using System.IO;

 

namespaceКурсовая

{

publicpartialclassForm1 : Form

    {

public Form1()

        {

InitializeComponent();

        }

privatevoid Form1_Paint(object sender, PaintEventArgs e)

        {

Mesh piramide = new Mesh();

Graphics g = e.Graphics;

Pen p = new Pen(Color.DeepSkyBlue, 3);

            piramide.Read_1();

int ni = piramide.koor.GetLength(0);

int nj = piramide.koor.GetLength(1);

piramide.Read();

int ki = piramide.mesh.GetLength(0);

int kj = piramide.mesh.GetLength(1);

Point[] a = new Point[ni];

int[] x = new int[ni];

int[] y = new int[ni];

for (int i = 0; i <ni; i++)

            {

              a[i].X = piramide.koor[i,0];

              a[i].Y = piramide.koor[I,1];

            }

 

Int max_x = a[0].X;

Int min_x = a[0].X;

for (int i = 1; i <ni; i++)

            {

             if (a[0].X >max_x)

                {

                  max_x = a[0].X;

                }

             if (a[0].X <min_x)

                {

                  min_x = a[0].X;

                }

            }

Int max_y = a[0].Y;

Int min_y = a[0].Y;

for (int i = 1; i <ni; i++)

            {

             if (a[0].Y >max_y)

                {

                  max_y = a[0].Y;

                 }

             if (y[i] <min_y)

               {

                  min_y = a[0].Y;

                }

            }

int width = this.Size.Width - 100;

int hight = this.Size.Height - 100;

Point[] b = new Point[x.Length];

for (int i = 0; i <ni ; i++)

            {

              b[i].X = 10 + width * (a[i].X - min_x) / (max_x - min_x);

              b[i].Y = 10 + hight * (a[i].Y - min_y) / (max_y - min_y);

            }

     for (int i = 0; i <ki; i++)

            {

             int j = 0;

             g.DrawLine(p, b[piramide.mesh[i, j]], b[piramide.mesh[i, j + 1]]);

             g.DrawLine(p, b[piramide.mesh[i, j + 1]], b[piramide.mesh[i, j + 2]]);

             g.DrawLine(p, b[piramide.mesh[i, j + 2]], b[piramide.mesh[i, j]]);

 

            }

Line[] line=new Line[ki*kj];

int k = 0;

for(int i = 0; i<ki;i++)

            {

for (int j = 0; j < 3; j++)

                {

                  line[k] = new Line(piramide.mesh[i, j], piramide.mesh[i, (j + 1)%3]);

                  k++;

                }

            }

Line[] maskoor = new Line[0];

for (int m = 0; m <ki*kj; m++)

            {

              for (int u = 0; u <ki*kj; u++)

                {

                  if  ((m!=u) && (line[m].a==line[u].b && line[m].b==line[u].a))

                   {

                     Array.Resize(refmaskoor, maskoor.Length + 1);

                     maskoor[maskoor.Length-1] = new Line();

                     maskoor[maskoor.Length-1].a = line[m].a;

                     maskoor[maskoor.Length-1].b = line[m].b;

                    }

                }

            }

Pen r = new Pen(Color.Fuchsia, 5);

string Name = @"C:\Users\Cheburashka\Documents\Visual Studio 2010\Projects\Курсовая\Узлывнутртр.txt";

StreamWriter file = newStreamWriter(Name);

string Name1 = @"C:\Users\Cheburashka\Documents\Visual Studio 2010\Projects\Курсовая\Коорузловвнутртр.txt";

StreamWriter file1 = newStreamWriter(Name1);

for (int i = 0; i <maskoor.Length - 1; i = i + 2)

            {

             g.DrawLine(r, b[maskoor[i].a], b[maskoor[i].b]);

             file.WriteLine(maskoor[i].a + ";" + maskoor[i].b);

             file1.WriteLine(b[maskoor[i].a].X + ";" + b[maskoor[i].a].Y);

            }

       file.Close();

       file1.Close();  

        }

    }

}


Информация о работе Программирование на C#