Проверка рисования и использование GUI - C#
Формулировка задачи:
Вот сделала программу, только не знаю, работает ли она корректно. Можете мальчики посмотреть ?
Решение задачи: «Проверка рисования и использование GUI»
textual
Листинг программы
using System; using System.Drawing; using System.Windows.Forms; namespace Demonstration_Form { public partial class Demonstration_Form1 : Form { public Demonstration_Form1() { InitializeComponent(); label1.MouseEnter += (sender, e) => { label1.ForeColor = Color.Gray; }; label1.MouseLeave += (sender, e) => { label1.ForeColor = Color.Black; }; label2.MouseEnter += (sender, e) => { label2.ForeColor = Color.Gray; }; label2.MouseLeave += (sender, e) => { label2.ForeColor = Color.Black; }; } Graphics[] graphics = new Graphics[3]; private void Demonstration_Form1_Load(object sender, EventArgs e) { graphics[0] = panel1.CreateGraphics(); graphics[1] = panel2.CreateGraphics(); graphics[2] = panel3.CreateGraphics(); this.DoubleBuffered = true; } bool is_Checked = false; private void panel1_Paint(object sender, PaintEventArgs e) { if (!is_Checked) { graphics[0].DrawRectangle(new Pen(Color.Black, 2.00f), new Rectangle(panel1.Width/2-32, panel1.Height/2 - 32, 65, 65)); graphics[0].FillRectangle(Brushes.DarkGray, new Rectangle(panel1.Width / 2 - 31, panel1.Height / 2 - 31, 63, 63)); } else if (is_Checked) { graphics[0].DrawRectangle(new Pen(Color.Black, 2.00f), new Rectangle(panel1.Width / 2 - 32, panel1.Height / 2 - 32, 65, 65)); graphics[0].FillRectangle(Brushes.DarkKhaki, new Rectangle(panel1.Width / 2 - 31, panel1.Height / 2 - 31, 63, 63)); } } bool is_Checked2 = false; private void panel2_Paint(object sender, PaintEventArgs e) { if (!is_Checked2) { graphics[1].DrawEllipse(new Pen(Color.Black, 2.00f), new Rectangle(panel2.Width / 2-32, panel2.Height / 2-32, 65, 65)); graphics[1].FillEllipse(Brushes.DarkGray, new Rectangle(panel2.Width / 2 - 31, panel2.Height / 2 - 31, 63, 63)); } else if (is_Checked2) { graphics[1].DrawEllipse(new Pen(Color.Black, 2.00f), new Rectangle(panel2.Width / 2 - 32, panel2.Height / 2 - 32, 65, 65)); graphics[1].FillEllipse(Brushes.DarkKhaki, new Rectangle(panel2.Width / 2 - 31, panel2.Height / 2 - 31, 63, 63)); } } bool dragdrop2 = false, draw2 = false; private void panel2_Click(object sender, EventArgs e) { is_Checked2 = true; is_Checked = false; panel2.Invalidate(); panel1.Invalidate(); if (MessageBox.Show("Вы выбрали круг. При нажатии <Да> вы включите способность рисования." + " При нажатии <Нет> вы включите способность перемещения выбраного объекта.", "Demonstration Form", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { panel3.Invalidate(); draw2 = true; dragdrop2 = false; draw = false; dragdrop = false; } else { dragdrop2 = true; draw2 = false; draw = false; dragdrop = false; } } bool draw = false, dragdrop = false; private void panel1_Click(object sender, EventArgs e) { is_Checked = true; is_Checked2 = false; panel1.Invalidate(); panel2.Invalidate(); if (MessageBox.Show("Вы выбрали квадрат. При нажатии <Да> вы включите способность рисования." + " При нажатии <Нет> вы включите способность перемещения выбраного объекта.", "Demonstration Form", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { panel3.Invalidate(); draw = true; dragdrop = false; draw2 = false; dragdrop2 = false; } else { dragdrop = true; draw = false; draw2 = false; dragdrop2 = false; } } int x = 100, y = 100; private void panel3_Paint(object sender, PaintEventArgs e) { if (draw) { timer1.Start(); } else if (dragdrop) { timer1.Stop(); graphics[2].FillRectangle(Brushes.Black, new Rectangle(x - 40 / 2, y - 40 / 2, 40, 40)); } if (draw2) { timer1.Start(); } else if (dragdrop2) { timer1.Stop(); graphics[2].FillEllipse(Brushes.Black, new Rectangle(x-40/2, y-40/2, 40, 40)); } } private void panel3_MouseMove(object sender, MouseEventArgs e) { label3.Text = "Координаты мыши: x=" + e.X + ", y=" + e.Y; x = e.X; y = e.Y; if (dragdrop || dragdrop2) { timer1.Enabled = false; panel3.Invalidate(); } else timer1.Enabled = true; } private void timer1_Tick(object sender, EventArgs e) { if (draw) { graphics[2].FillRectangle(Brushes.Black, new Rectangle(x - 10 / 2, y - 10 / 2, 10, 10)); } else if (draw2) { graphics[2].FillEllipse(Brushes.Black, new Rectangle(x - 10 / 2, y - 10 / 2, 10, 10)); } } private void button1_Click(object sender, EventArgs e) { var bounds = panel3.Size; var bmp = new Bitmap(bounds.Width, bounds.Height); using (var v = Graphics.FromImage(bmp)) v.CopyFromScreen(this.Location.X + panel3.Location.X, this.Location.Y + panel3.Location.Y, 0, 0, bmp.Size); MessageBox.Show("Изображение успешно сохранено!", "Demonstration Form", MessageBoxButtons.OK, MessageBoxIcon.Information); bmp.Save("df_image.jpg"); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д