Создать класс очередь. Графическая реализация очереди на основе класса - C#

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста, полнейша безысходность в простых прораммах работа с очередью понятно, но с графической реализацией...

Решение задачи: «Создать класс очередь. Графическая реализация очереди на основе класса»

textual
Листинг программы
public partial class Form1 : Form
    {
        public class MyQueue 
        {
            List<MyRect> list;
 
            public MyQueue()
            {
                list = new List<MyRect>();
            }
 
            public void Enqueue(MyRect rect)
            {
                rect.Number = list.Count;
                list.Add(rect);
            }
 
            public MyRect Get()
            {
                MyRect tmp = list[0];
                list.RemoveAt(0);
                return tmp;
            }
 
            public void DrawQueue(Graphics g)
            {
                foreach (MyRect r in list)
                {
                    r.Draw(g);
                }
            }
        }
 
        public class MyRect 
        {
            Rectangle rect;
            int number;
 
            public MyRect(int x, int y, int width, int height)
            {
                rect.X = x;
                rect.Y = y;
                rect.Width = width;
                rect.Height = height;
            }
 
            public int Number
            {
                get { return number; }
                set { this.number = value; }
            }
 
            public void Draw(Graphics g)
            {
                g.DrawRectangle(new Pen(new SolidBrush(Color.Black)), rect);
                g.DrawString(number.ToString(), new Font("Arial", 10), new SolidBrush(Color.Black), rect.X + 5, rect.Y + 5);
            }
        }
        
        MyQueue queue;
        Random rand;
        Panel panel1, panel2;
        List<MyRect> l; //список для выборки из очереди
 
        public Form1()
        {
            queue = new MyQueue();
            rand = new Random();
            l = new List<MyRect>();
            Button add, del;
            add = new Button();
            del = new Button();
            add.SetBounds(10, 10, 70, 30);
            del.SetBounds(100, 10, 70, 30);
            add.Text = "Добавить";
            del.Text = "Вытащить";
            this.Controls.Add(add);
            this.Controls.Add(del);
            add.Click += add_Click;
            del.Click += del_Click;
            panel1 = new Panel();
            panel2 = new Panel();
            panel1.SetBounds(10, 50, 200, 200);
            panel2.SetBounds(220, 50, 200, 200);
            panel1.BorderStyle = BorderStyle.FixedSingle;
            panel2.BorderStyle = BorderStyle.FixedSingle;
            this.Controls.Add(panel1);
            this.Controls.Add(panel2);
            panel1.Paint += panel1_Paint;
            panel2.Paint += panel2_Paint;
            InitializeComponent();
            this.Width = 440;
            this.Height = 300;
        }
 
        void panel2_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = Graphics.FromHwnd(panel2.Handle);
            foreach (MyRect r in l)
            {
                r.Draw(g);
            }
        }
 
        void panel1_Paint(object sender, PaintEventArgs e)
        {
            queue.DrawQueue(Graphics.FromHwnd(panel1.Handle));
        }
 
        void del_Click(object sender, EventArgs e)
        {
            try
            {
                l.Add(queue.Get());
            }
            catch (ArgumentOutOfRangeException)
            { MessageBox.Show("Очередь пуста"); return; }
            panel1.Refresh();
            panel2.Refresh();
        }
 
        void add_Click(object sender, EventArgs e)
        {
            queue.Enqueue(new MyRect(rand.Next(0, panel1.Width-30), rand.Next(panel2.Height-30), 20, 20));
            panel1.Refresh();
        }
    }

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


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

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

12   голосов , оценка 4.333 из 5
Похожие ответы