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

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

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

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

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

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace _4
  11. {
  12.     public partial class Form1 : Form
  13.     {
  14.        
  15.         public bool draw = false;
  16.         Graphics GraphForm;
  17.         struct my_line
  18.         {
  19.             public Point first;
  20.             public Point last;
  21.         };
  22.         my_line my_lines;
  23.  
  24.  
  25.         public Form1()
  26.         {
  27.             InitializeComponent();
  28.         }
  29.  
  30.         private void Form1_SizeChanged(object sender, EventArgs e)
  31.         {
  32.             this.WindowState = FormWindowState.Maximized;
  33.         }
  34.  
  35.         private void запускToolStripMenuItem_Click(object sender, EventArgs e)
  36.         {
  37.             if (!draw)
  38.             {
  39.                 draw = true;
  40.             }
  41.             timer1.Enabled = true;  
  42.         }
  43.  
  44.         private void остановкаToolStripMenuItem_Click(object sender, EventArgs e)
  45.         {
  46.             timer1.Enabled = false;
  47.         }
  48.  
  49.         private void увеличениеToolStripMenuItem_Click(object sender, EventArgs e)
  50.         {
  51.            
  52.             if (увеличениеToolStripMenuItem.Text == "Увеличение")
  53.             {
  54.                 увеличениеToolStripMenuItem.Text = "Уменьшение";
  55.                
  56.             }
  57.             else
  58.             {
  59.                 увеличениеToolStripMenuItem.Text = "Увеличение";
  60.                
  61.             }
  62.         }
  63.  
  64.         private void ускорениеToolStripMenuItem_Click(object sender, EventArgs e)
  65.         {
  66.             if (ускорениеToolStripMenuItem.Text == "Ускорение")
  67.             {
  68.                 ускорениеToolStripMenuItem.Text = "Замедление";
  69.                 timer1.Interval /= 4;
  70.             }
  71.             else
  72.             {
  73.                 ускорениеToolStripMenuItem.Text = "Ускорение";
  74.                 timer1.Interval *= 4;
  75.             }
  76.         }
  77.  
  78.         private void выходToolStripMenuItem_Click(object sender, EventArgs e)
  79.         {
  80.             if (MessageBox.Show("Выйти?", "Сообщение", MessageBoxButtons.OKCancel) == DialogResult.OK) Close();
  81.         }
  82.  
  83.         private void Form1_Load(object sender, EventArgs e)
  84.         {
  85.            
  86.             Random rnd = new Random();
  87.             progressBar1.Maximum = 24;
  88.             progressBar1.Value = 0;
  89.             progressBar1.Step = 1;
  90.             my_lines = new my_line();
  91.             my_lines.first.X = 660;
  92.             my_lines.first.Y = 381;
  93.             my_lines.last.X = 700;
  94.             my_lines.last.Y = 390;                  
  95.  
  96.  
  97.            
  98.         }
  99.  
  100.  
  101.         private void Form1_DoubleClick(object sender, EventArgs e)
  102.         {
  103.             Graphics g = panel1.CreateGraphics();
  104.             g.DrawString("Лабораторная работа №4 Макрушко Катерины", new Font("Times New Roman", 12), new SolidBrush(Color.Black), 0, 0);
  105.            
  106.         }
  107.  
  108.         private void timer1_Tick(object sender, EventArgs e)
  109.         {
  110.            
  111.             Pen p = new Pen(Color.Black, 3);
  112.             Graphics g = this.CreateGraphics();
  113.             g.Clear(this.BackColor);
  114.               g.DrawLine(p, my_lines.first, my_lines.last);
  115.                 my_lines.first.X += 50;
  116.                 my_lines.last.X += 50;
  117.            
  118.          
  119.  
  120.             if (progressBar1.Value == progressBar1.Maximum)
  121.             {
  122.                 progressBar1.Value = 0;
  123.             }
  124.             progressBar1.PerformStep();
  125.             this.Refresh();
  126.         }
  127.  
  128.       /*  private void Form1_Paint(object sender, PaintEventArgs e)
  129.         {
  130.            
  131.             Random rnd = new Random();
  132.             if (draw)
  133.             {
  134.                 t.draw(e.Graphics, Color.FromArgb(rnd.Next(0,255),rnd.Next(0,255),rnd.Next(0,255)));
  135.             }
  136.            /* Graphics g = e.Graphics;
  137.  
  138.             Pen p = new Pen(Color.Black, 3);
  139.             g.DrawLine(p, 660, 381, 700, 390);
  140.            
  141.         }*/
  142.     }
  143. }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы