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

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


Уроки Windows Forms C++/C#




Рисование линий в PictureBox MVS C++/C#

В этом уроке вы приступите к изучению базовых приёмов рисования в "PictureBox". И в данном уроке будет рассмотрено то, как нарисовать линию заданной длины, цвета и в заданном месте поля "PictureBox". Для этого нам понадобятся: 4 "textBox", 1 "button", и конечно же "PictureBox". Примерный вид программы:



То, как изменить цвет фона элемента (“PictureBox”) рассматривается в этом уроке. В “textBox”ы мы будем записывать начальное и конечное значение координат поля рисования: две координаты – одна точка, ещё две координаты – ещё одна точка, которая соединяется с предыдущей, образуя отрезок, заданного в коде программы цвета. Значение каждой координаты, получаемое из текстового поля, мы будем конвертировать в "int"-Convert::ToInt32(textBox1->Text); А для хранения значения создаётся массив, его нужно объявить в верху программы:

int m_p[4];




Ну а теперь, пожалуй, приступим к коду самой программы, который вы можете видеть ниже. В нём, как видите, вызвано событие "PictureBox1_Paint", о том, как вызвать событие элемента рассматривается в “этом уроке”. В событии "button1_Click" есть строка - pictureBox1->Refresh(); с помощью неё каждый раз, когда пользователь будет вводить новые координаты, изображение в "PictureBox" будет заново прорисовываться.


C++


#pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
this->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(textBox2->Text);
m_p[3] = Convert::ToInt32(textBox3->Text);
m_p[4] = Convert::ToInt32(textBox4->Text);
pictureBox1->Refresh();
}

private: System::Void pictureBox1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) {
// Рисуем линию
e->Graphics->DrawLine(System::Drawing::Pens::Green, m_p[1], m_p[2], m_p[3], m_p[4]);
}

};
}




C#


namespace Risovanie_1_
{
public partial class Form1 : Form
{
int[] m_p = new int[5];
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
this.Text = "Рисуем Линию";
button1.Text = "Рисовать";
}

private void button1_Click(object sender, EventArgs e)
{
m_p[1] = Convert.ToInt32(textBox1.Text);
m_p[2] = Convert.ToInt32(textBox2.Text);
m_p[3] = Convert.ToInt32(textBox3.Text);
m_p[4] = Convert.ToInt32(textBox4.Text);
pictureBox1.Refresh();
}

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
// Рисуем линию
e.Graphics.DrawLine(System.Drawing.Pens.Green, m_p[1], m_p[2], m_p[3], m_p[4]);
}

}
}



Результат:


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