Постановка задачи и проектирование формы

Листинг 35.1. Метод для рисования геометрических изображений.

private void pictureBox1_Paint(object sender,

PaintEventArgs e)

{

//Объявляем индексы элементов всех массивов:

int i, j, k;

//Задаем границы индексов 1-го массива myArrayVC(i, j):

int N_x = 201; int N_y = 2;

//Объявляем 1-й массив myArrayVC(i, j) переменных float,

//когда i = 0,1,2,3,...,(N_x - 1);

// j = 0,1,2,3,...,(N_y - 1):

float[,] myArrayVC = new float[N_x, N_y];

//Для считывания из файла

//по адресу D:\\MyDocs\\MyTest3D_Graphics.txt

//координат изображения в массив myArrayVC(201, 2)

//создаем объект sr класса StreamReader:

StreamReader sr =

new StreamReader(

@"D:\\MyDocs\\MyTest3D_Graphics.txt");

//Считываем из файла MyTest3D_Graphics.txt

//координаты изображения в массив myArrayVC(201, 2)

//при помощи метода ReadLine:

for (i = 0; i <= N_x - 1; i++)

for (j = 0; j <= N_y - 1; j++)

myArrayVC[i, j] =

Convert.ToSingle(sr.ReadLine());

sr.Close();

//Рисуем первое изображение по координатам из массива.

//Объявляем координаты двух точек:

float x1, y1, x2, y2;

//Будем рисовать пером myPen толщиной 3:

Pen myPen = new Pen(Color.Black, 3);

//Объявляем переменные для начала N_first_line

//и конца N_last_line цикла при рисовании:

int N_first_line, N_last_line;

//Передаем переменным для начала и конца цикла

//значения первых двух элементов массива myArrayVC:

N_first_line = Convert.ToInt32(myArrayVC[0, 0]);

N_last_line = Convert.ToInt32(myArrayVC[0, 1]);

//Рисуем изображение, начиная с точки (1,0; 1,1):

i = -1;

for (k = N_first_line; k <= N_last_line; k++)

{

i = i + 2;

x1 = myArrayVC[i, 0];

y1 = myArrayVC[i, 1];

x2 = myArrayVC[i + 1, 0];

y2 = myArrayVC[i + 1, 1];

e.Graphics.DrawLine(myPen, x1, y1, x2, y2);

}

//Задаем границы индексов 2-го массива myArrayVC_2(i, j):

int N_x_2 = 201;

int N_y_2 = 2;

//Объявляем 2-й массив myArrayVC_2(i, j) перем-х float,

//когда i = 0,1,2,3,...,(N_x_2 - 1);

// j = 0,1,2,3,...,(N_y_2 - 1):

float[,] myArrayVC_2 = new float[N_x_2, N_y_2];

//Для считывания из файла

//по адресу D:\\MyDocs\\MyTest3D_Graphics_2.txt

//координат изображения в массив myArrayVC_2(201, 2)

//создаем объект sr_2 класса StreamReader:

StreamReader sr_2 = new StreamReader(

@"D:\\MyDocs\\MyTest3D_Graphics_2.txt");

//Считываем из файла MyTest3D_Graphics_2.txt

//координаты изображения в массив myArrayVC_2(201, 2)

//при помощи метода ReadLine:

for (i = 0; i <= N_x - 1; i++)

for (j = 0; j <= N_y - 1; j++)

myArrayVC_2[i, j] =

Convert.ToSingle(sr_2.ReadLine());

sr_2.Close();

//Рисуем второе изображение по координатам из массива.

//Будем рисовать пером myPen толщиной 1:

Pen myPen_2 = new Pen(Color.Black, 1);

//Объявляем переменные для начала N_first_line

//и конца N_last_line цикла при рисовании:

int N_first_line_2, N_last_line_2;

//Передаем переменным для начала и конца цикла

//значения первых двух элементов массива myArrayVC:

N_first_line_2 = Convert.ToInt32(myArrayVC_2[0, 0]);

N_last_line_2 = Convert.ToInt32(myArrayVC_2[0, 1]);

//Рисуем изображение, начиная с точки (1,0; 1,1):

i = -1;

//for (k = 1; k <= 3; k++)

for (k = N_first_line_2; k <= N_last_line_2; k++)

{

i = i + 2;

x1 = myArrayVC_2[i, 0];

y1 = myArrayVC_2[i, 1];

x2 = myArrayVC_2[i + 1, 0];

y2 = myArrayVC_2[i + 1, 1];

e.Graphics.DrawLine(myPen_2, x1, y1, x2, y2);

}

}

Аналогично по этой методологии мы можем разработать другие приложения для построения различных пространственных изображений.

Глава 36. Изображение объектов в трехмерном пространстве на основе нового синтаксиса Visual C++ 2005

Листинг 36.1. Метод для рисования геометрических изображений.

private: System::Void pictureBox1_Paint(

System::Object^ sender,

System::Windows::Forms::PaintEventArgs^ e)

{

//Объявляем индексы элементов всех массивов:

int i, j, k;

//Задаем границы индексов 1-го массива myArrayVC(i, j):

int N_x = 201; int N_y = 2;

//Объявляем 1-й массив myArrayVC[i, j] переменных float,

//когда i = 0,1,2,3,...,(N_x - 1);

// j = 0,1,2,3,...,(N_y - 1):

array<float,2>^ myArrayVC =

gcnew array<float,2>(N_x, N_y);

//Для считывания из файла

//по адресу D:\\MyDocs\\MyTest3D_Graphics.txt

//координат изображения в массив myArrayVC(201, 2)

//создаем объект sr класса StreamReader:

StreamReader^ sr = gcnew StreamReader(

"D:\\MyDocs\\MyTest3D_Graphics.txt");

//Считываем из файла MyTest3D_Graphics.txt

//координаты изображения в массив myArrayVC(201, 2)

//при помощи метода ReadLine:

for (i = 0; i <= N_x - 1; i++)

for (j = 0; j <= N_y - 1; j++)

myArrayVC[i, j] =

Convert::ToSingle(sr->ReadLine());

sr->Close();

//Рисуем первое изображение по координатам из массива.

//Объявляем координаты двух точек:

float x1, y1, x2, y2;

//Будем рисовать пером myPen толщиной 3 пикселя:

Pen^ myPen = gcnew Pen(Color::Black, 3);

//Объявляем переменные для начала N_first_line

//и конца N_last_line цикла при рисовании:

int N_first_line, N_last_line;

//Передаем переменным для начала и конца цикла

//значения первых двух элементов массива myArrayVC:

N_first_line = Convert::ToInt32(myArrayVC[0, 0]);

N_last_line = Convert::ToInt32(myArrayVC[0, 1]);

//Рисуем изображение, начиная с точки (1,0; 1,1):

i = -1;

for (k = N_first_line; k <= N_last_line; k++)

{

i = i + 2;

x1 = myArrayVC[i, 0];

y1 = myArrayVC[i, 1];

x2 = myArrayVC[i + 1, 0];

y2 = myArrayVC[i + 1, 1];

e->Graphics->DrawLine(myPen, x1, y1, x2, y2);

}

//Задаем границы индексов 2-го массива myArrayVC_2(i, j):

int N_x_2 = 201; int N_y_2 = 2;

//Объявляем 2-й массив myArrayVC_2(i, j) перем-х float,

//когда i = 0,1,2,3,...,(N_x_2 - 1);

// j = 0,1,2,3,...,(N_y_2 - 1):

array<float,2>^ myArrayVC_2 =

gcnew array<float,2>(N_x_2, N_y_2);

//Для считывания из файла

//по адресу D:\\MyDocs\\MyTest3D_Graphics_2.txt

//координат изображения в массив myArrayVC_2(201, 2)

//создаем объект sr_2 класса StreamReader:

StreamReader^ sr_2 = gcnew StreamReader(

"D:\\MyDocs\\MyTest3D_Graphics_2.txt");

//Считываем из файла MyTest3D_Graphics_2.txt

//координаты изображения в массив myArrayVC_2(201, 2)

//при помощи метода ReadLine:

for (i = 0; i <= N_x - 1; i++)

for (j = 0; j <= N_y - 1; j++)

myArrayVC_2[i, j] =

Convert::ToSingle(sr_2->ReadLine());

sr_2->Close();

//Рисуем второе изображение по координатам из массива.

//Будем рисовать пером myPen толщиной 1:

Pen^ myPen_2 = gcnew Pen(Color::Black, 1);

//Объявляем переменные для начала N_first_line

//и конца N_last_line цикла при рисовании:

int N_first_line_2, N_last_line_2;

//Передаем переменным для начала и конца цикла

//значения первых двух элементов массива myArrayVC:

N_first_line_2 = Convert::ToInt32(myArrayVC_2[0, 0]);

N_last_line_2 = Convert::ToInt32(myArrayVC_2[0, 1]);

//Рисуем изображение, начиная с точки (1,0; 1,1):

i = -1;

for (k = N_first_line_2; k <= N_last_line_2; k++)

{

i = i + 2;

x1 = myArrayVC_2[i, 0]; y1 = myArrayVC_2[i, 1];

x2 = myArrayVC_2[i + 1, 0];y2 = myArrayVC_2[i + 1, 1];

e->Graphics->DrawLine(myPen_2, x1, y1, x2, y2);

}

}

Аналогично по этой методологии мы можем разработать другие приложения для построения различных пространственных изображений.


Наши рекомендации