Уроки Windows Forms C++/C#
Рисование треугольника в PictureBox MVS C++/C#После того, как вы узнали как рисовать линию, можно уже будет нарисовать какую-нибудь простую фигуру – например треугольник. Для этого нужно нарисовать всего лишь три точки, а не шесть. Сначала может показать, что нужно рисовать три отрезка по отдельности и пытаться задать такие координаты, что бы получился треугольник – это излишнее и неэффективное нагромождение программы. Поэтому нужно сделать так, чтобы конец одного отрезка являлся началом другого – что, собственно, мы и сделаем. Из прошлого урока вы можете вспомнить, что мы создавали массив из четырёх элементов для создания двух точек, в этой же программе нам нужно задавать массив из шести элементов для создания трех точек. Для реализации данного проекта понадобятся: 6 "textBox", 1 "button", 1 "PictureBox", 1 "label". В коде данного проекта задаются отрезки чёрного, красного и белого цвета. Вы можете изменить цвет формы и цвет “PictureBox”, так как цвет линий может слиться с цветом фона , как это делать рассматривается в этом уроке. Примерный вид формы программы:

Приступим к коду программы, если не знаете, как задать массив в коде данного проекта – обязательно посмотрите предыдущий урок. В этом проекте у элемента "PictureBox" нужно вызвать событие "Paint", если не знаете, то посмотрите этот урок. Код программы:
C++
#pragma endregion private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { label1->Text = "Введите координаты"; button1->Text = "Рисовать"; } private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { m_p[1] = Convert::ToInt32(textBox1->Text); m_p[2] = Convert::ToInt32(textBox4->Text); m_p [3] = Convert::ToInt32(textBox2->Text); m_p [4] = Convert::ToInt32(textBox5->Text); m_p [5] = Convert::ToInt32(textBox3->Text); m_p [6] = Convert::ToInt32(textBox6->Text); pictureBox1->Refresh(); } private: System::Void pictureBox1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { e->Graphics->DrawLine(System::Drawing::Pens::Black, m_p [1], m_p [2], m_p [3], m_p [4]); e->Graphics->DrawLine(System::Drawing::Pens::Red, m_p [3], m_p [4], m_p [5], m_p [6]); e->Graphics->DrawLine(System::Drawing::Pens::White, m_p [5], m_p [6], m_p [1], m_p [2]); } }; }
В C# обязательно нужно объявить переменную "index" и задать массив из 7 элементов, а не из шести, как в C++, иначе компилятор выдаст ошибку.
C#
namespace Treygolnik_1_ { public partial class Form1 : Form { int[] m_p = new int[7]; int index; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { label1.Text = "Введите координаты"; button1.Text = "Рисовать"; } private void button1_Click(object sender, EventArgs e) { m_p[1] = Convert.ToInt32(textBox1.Text); m_p[2] = Convert.ToInt32(textBox4.Text); m_p [3] = Convert.ToInt32(textBox2.Text); m_p [4] = Convert.ToInt32(textBox5.Text); m_p [5] = Convert.ToInt32(textBox3.Text); m_p [6] = Convert.ToInt32(textBox6.Text); index = 1; pictureBox1.Refresh(); } private void pictureBox1_Paint(object sender, PaintEventArgs e) { if (index == 1) { e.Graphics.DrawLine(System.Drawing.Pens.Black, m_p[1], m_p[2], m_p[3], m_p[4]); e.Graphics.DrawLine(System.Drawing.Pens.Red, m_p[3], m_p[4], m_p[5], m_p[6]); e.Graphics.DrawLine(System.Drawing.Pens.White, m_p[5], m_p[6], m_p[1], m_p[2]); } } } }
Результат:
Следующий урок >>