Проверка рисования и использование 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");
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5