Генератор цветов Уроки C++ Уроки Windows forms Учебники по программированию Уроки HTML Уроки CSS Готовые задания Исходники Полезные программы
регистрация доменов

Дешёвые домены


Уроки 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]);
}
}

}
}



Результат:


Следующий урок >>