Штрихпунктирная линия совершает движение по прямоугольной спирали до столкновения с краем формы - C#

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

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

Код к задаче: «Штрихпунктирная линия совершает движение по прямоугольной спирали до столкновения с краем формы - C#»

textual
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace _4
{
    public partial class Form1 : Form
    {
        
        public bool draw = false;
        Graphics GraphForm;
        struct my_line
        {
            public Point first;
            public Point last;
        };
        my_line my_lines;
 
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_SizeChanged(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Maximized;
        }
 
        private void запускToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (!draw)
            {
                draw = true;
            }
            timer1.Enabled = true;   
        }
 
        private void остановкаToolStripMenuItem_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;
        }
 
        private void увеличениеToolStripMenuItem_Click(object sender, EventArgs e)
        {
           
            if (увеличениеToolStripMenuItem.Text == "Увеличение")
            {
                увеличениеToolStripMenuItem.Text = "Уменьшение";
               
            }
            else
            {
                увеличениеToolStripMenuItem.Text = "Увеличение";
               
            }
        }
 
        private void ускорениеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (ускорениеToolStripMenuItem.Text == "Ускорение")
            {
                ускорениеToolStripMenuItem.Text = "Замедление";
                timer1.Interval /= 4;
            }
            else
            {
                ускорениеToolStripMenuItem.Text = "Ускорение";
                timer1.Interval *= 4;
            } 
        }
 
        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Выйти?", "Сообщение", MessageBoxButtons.OKCancel) == DialogResult.OK) Close();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            
            Random rnd = new Random();
            progressBar1.Maximum = 24;
            progressBar1.Value = 0;
            progressBar1.Step = 1;
            my_lines = new my_line();
            my_lines.first.X = 660;
            my_lines.first.Y = 381;
            my_lines.last.X = 700;
            my_lines.last.Y = 390;                  
 
 
            
        }
 
 
        private void Form1_DoubleClick(object sender, EventArgs e)
        {
            Graphics g = panel1.CreateGraphics();
            g.DrawString("Лабораторная работа №4 Макрушко Катерины", new Font("Times New Roman", 12), new SolidBrush(Color.Black), 0, 0);
            
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
           
            Pen p = new Pen(Color.Black, 3);
            Graphics g = this.CreateGraphics();
            g.Clear(this.BackColor);
              g.DrawLine(p, my_lines.first, my_lines.last);
                my_lines.first.X += 50;
                my_lines.last.X += 50;
            
          
 
            if (progressBar1.Value == progressBar1.Maximum)
            {
                progressBar1.Value = 0;
            }
            progressBar1.PerformStep();
            this.Refresh();
        }
 
      /*  private void Form1_Paint(object sender, PaintEventArgs e)
        {
            
            Random rnd = new Random();
            if (draw)
            {
                t.draw(e.Graphics, Color.FromArgb(rnd.Next(0,255),rnd.Next(0,255),rnd.Next(0,255)));
            }
           /* Graphics g = e.Graphics;
 
            Pen p = new Pen(Color.Black, 3);
            g.DrawLine(p, 660, 381, 700, 390);
            
        }*/
    }
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

15   голосов, оценка 4.000 из 5


СДЕЛАЙТЕ РЕПОСТ