Уроки Windows Forms C++/C#
Рисование кистью в PictureBox MVS C++/C#Все знают такую программу, как "Paint". Одно из самых ярких его свойств – это рисование произвольных линий кистью - именно это мы сейчас и сделаем. Для этого нужно перетащить на форму "PictureBox" и выбрать у него свойства "MousDown", ""MausUp" и "MouseMove", если не знаете, как это сделать – обязательно посмотрите этот урок. Алгоритм работы программы следующий: когда пользователь нажимает на левую кнопки мышки, то за курсором начинает прорисовываться огромное количество маленьких квадратиков. Размер этих квадратиков указывается в коде. Так же на форму нужно перенести кнопку "button", которая будет очищать поле рисования. Вид программы очевиден:
Теперь перейдём к коду, обязательно нужно создать переменную типа "bool":
C++
#pragma endregion bool Drow; 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) { Graphics ^ Графика = pictureBox1->CreateGraphics(); Графика->Clear(SystemColors::Window); } private: System::Void pictureBox1_MouseMove(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { Graphics^ graf = pictureBox1->CreateGraphics(); if (Drow == true) { graf->FillEllipse(Brushes::Violet, e->X, e->Y, 3,3); // толщина кисти } } private: System::Void pictureBox1_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { Drow = true; } private: System::Void pictureBox1_MouseUp(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { Drow = false; } }; }
C#
namespace Risovanie_2_ { public partial class Form1 : Form { bool Drow; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.Text = "Рисование кистью"; button1.Text = "Очистить"; } private void button1_Click(object sender, EventArgs e) { Graphics Графика = pictureBox1.CreateGraphics(); Графика.Clear(SystemColors.Window); } private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { Graphics graf = pictureBox1.CreateGraphics(); if (Drow == true) { graf.FillEllipse(Brushes.Violet, e.X, e.Y, 3, 3); // толщина кисти } } private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { Drow = true; } private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { Drow = false; } } }
Результат:
Следующий урок >>
