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

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


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);
            
        }*/
    }
}


Похожие ответы
  1. Задание:Создать абстрактный класс линия второго порядка с полями – коэффициенты уравнения второго порядка. На его основе создать классы окружность, парабола (с мето-дом нахождения директрисы), гипербола, эллипс (с методом нахождения эксцентрисите-та). Предусмотреть виртуальные методы нахождения центра (вершин или фокусов) линий и функции вывода данных на экран.Решать задачу я не прошу, я только лишь не пойму, коэффициенты уравнения это имеют ввиду A,B,C,D,E,F из картинки ниже? Если так то как тогда искать директрису,эксцентриситет итд... Приводить к каноническому виду что ли? Задача сама по себе на тему наследование итд. не думаю что тут требует сверх усилий в знании геометрии,возможно что то не так понимаю..Буду рад предположениям и подсказкам!

  1. Найти суммы элементов двухмерного массива целых чисел, расположенных на линиях, парал-лельных главной диагонали, и ниже нее.

  1. Привет, помогите новичку... Никак не пойму как сделать заливку на рисунке. Нужно закрасить определенным цветом область внутри прямоугольника (определяется четырьмя точками, а потом DrawLine'ом проводятся линии), но вне эпициклоиды (определяется как односвязный список List, все точки соединены опять же DrawLine'ами).

  1. Задание: Реализовать иерархию классов Фигура-Линия–Квадрат (данные-координаты). Класс “Фигура” - абстрактный. В каждом производном классе присутствует - конструктор инициализации, методы ввода-вывода данных, метод вычисления площади (если это возможно) и объема (если это возможно) фигуры. Вопрос - почему я не получаю результат? Как исправить?

  1. Помогите, вообще не знаю как это сделать Создать класс Line (линия). На его основе создать классы ColoredLine и Treug (треугольник). В классах описать следующие элементы:  конструкторы с параметрами;  свойства для установки и получения значений всех координат, а также для изменения цвета и получения текущего цвета;  для линий — методы расчета длины отрезка  для треугольника — метод расчета периметра;  метод Show.

  1. Добрый день, подскажите как бы лучше создать класс или может даже базу данных автобусных линий. например есть маршрут номер 11 .есть определённые остановки , есть время в течение дня когда маршрут номер 11 там останавливается. по будним дням в определённые времена, на выходных - другие времена. таких маршрутов пару штук. Как бы вы это реализовали что бы потом с помощью LINQ иметь доступ к этим данным и производить вывод на экран? Как то так что ли? Кликните здесь для просмотра всего текста

  1. Задания на наследование. Создать класс Point (точка). На его основе создать классы ColoredPoint и Line (линия). В классах описать следующие элементы: конструкторы с параметрами; свойства для установки и получения значений всех координат, а также для изменения цвета и получения текущего цвета; для линий — методы расчета длины отрезка;

  1. Создать программу, которая рандомно расставляет точки на форме и начинает их соединять линиями с разными цветами. Реализовать 5 разных цветов, они должны меняться циклически. Реализовать в форме выбор количества точек и интервалы значений координат. Задача реализуется с помощью WindowsForms.

  1. Условие: Определить иерархию классов, определить в этих классах методы, которые перемещает фигуру по плоскости, возвращают ее площадь, периметр, и строку символов, отражающую имя класса и состояние объекта. Добавить абстрактный класс «Фигура» в систему классов(Линия, параллелограмм, ромб), включите в него все методы прочих классов. подскажите пожалуйста как должно выглядеть решение

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