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

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


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

}
}



Результат:


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