Уроки Windows Forms C++/C#
Рисование Эллипса и окружности в PictureBox MVS C++/C#В прошлом уроке был рассмотрен способ рисования треугольника, в котором цвет его линий определялся в той же строке, где и координаты точек. В этом уроке будет показан пример создания "Пера" или "Карандаша" (как вам привычней), которые будет задавать цвет контура фигуры. Что бы нарисовать эллипс нужно указать координаты верхнего левого угла условного прямоугольника, в котором находится рисуемая фигура, и радиусы. Если горизонтальный и вертикальный радиусы равны, то получится окружность, а если нет, то получится эллипс. Для создания данного проекта понадобятся: 4"textBox", 1"button", 1"label" и 1"PictureBox". Перетащите все перечисленные элементы на форму и оформите программу следующим образом:
Если не знаете, как изменить цвет поля "PictureBox" – посмотрите это урок, а так же этот, если не знаете, как выбрать событие у элемента – в данном случае "PictureBox1_Paint". Теперь перейдём к коду. Так же, как и в предыдущих уроках, создаём массив из 4-х элементов, в которых будут хранится данные, вводимые в "textBox": int m_p[4]; Что бы компилятор понял, что вы хотите нарисовать эллипс – нужно написать "DrawEllipse". Код программы:
C++
#pragma endregion private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { this->Text = "Рисование эллипса"; 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(textBox2->Text); m_p[3] = Convert::ToInt32(textBox3->Text); m_p[4] = Convert::ToInt32(textBox4->Text); pictureBox1->Refresh(); pictureBox1->Refresh(); } private: System::Void pictureBox1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { Pen^ Перо = gcnew Pen(Color::Black); e->Graphics->DrawEllipse(Перо, m_p [1], m_p [2], m_p [3], m_p [4]); } }; }
В C# нужно объявить переменную "index", что бы проект был успешно скомпилирован:
C#
namespace Ellipse_1_ { public partial class Form1 : Form { int[] m_p = new int[5]; int index; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.Text = "Рисование эллипса"; label1.Text = "Введите данные"; button1.Text = "Рисовать"; } private void button1_Click(object sender, EventArgs e) { index = 1; 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) { if (index == 1) { Pen Перо = new Pen(Color.Black); e.Graphics.DrawEllipse(Перо, m_p[1], m_p[2], m_p[3], m_p[4]); } } } }
Результат:
Следующий урок >>
