Рисование линий разных размеров и цветов. Управление цветом в зависимости от условия - C#

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

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

вопрос следующий у меня есть код в котором я рисую линии две нахожу их точки пересечения и так далее вопрос следующий я хочу чтоб после отрисовок линий проверялось что если линии 1 длиннее линии 2 то линия 1 будет красного (например) цвета, а линия 2 будет такого-то цвета. А если линия 1 меньше линии 2 то другие цвета Перепробовал разные варианты код не отрбатывается((( помогите пожалуйста.
Листинг программы
  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. namespace WindowsFormsApplication2
  10. {
  11. public partial class Form1 : Form
  12. {
  13. public Form1()
  14. {
  15. InitializeComponent();
  16. }
  17. private void button1_Click(object sender, EventArgs e)
  18. {
  19. Graphics gr;
  20. gr = this.CreateGraphics();
  21. Pen pn = new Pen(Color.Black, 3);
  22. int X1 = Convert.ToInt32(this.textBox1.Text); //ввод данных в текстбокс
  23. int Y1 = Convert.ToInt32(this.textBox2.Text); //ввод данных в текстбокс
  24. int X2 = Convert.ToInt32(this.textBox3.Text); //ввод данных в текстбокс
  25. int Y2 = Convert.ToInt32(this.textBox4.Text); //ввод данных в текстбокс
  26. gr.DrawLine(pn, X1, Y1, X2, Y2);
  27.  
  28. }
  29. private void button2_Click(object sender, EventArgs e)
  30. {
  31. Graphics gr;
  32. gr = this.CreateGraphics();
  33. Pen pn1 = new Pen(Color.Black, 3);
  34. int X3 = Convert.ToInt32(this.textBox5.Text); //ввод данных в текстбокс
  35. int Y3 = Convert.ToInt32(this.textBox6.Text); //ввод данных в текстбокс
  36. int X4 = Convert.ToInt32(this.textBox8.Text); //ввод данных в текстбокс
  37. int Y4 = Convert.ToInt32(this.textBox9.Text); //ввод данных в текстбокс
  38. gr.DrawLine(pn1, X3, Y3, X4, Y4);
  39. }
  40. private void button3_Click(object sender, EventArgs e)
  41. {
  42. // очистка TextBox
  43. Graphics gr;
  44. gr = this.CreateGraphics();
  45. gr.Clear(BackColor);
  46. textBox7.Text = "";
  47. textBox7.Clear();
  48. textBox10.Text = "";
  49. textBox10.Clear();
  50. textBox11.Text = "";
  51. textBox11.Clear();
  52. textBox12.Text = "";
  53. textBox12.Clear();
  54. }
  55. private void button4_Click(object sender, EventArgs e)
  56. {
  57. //расчет точки пересечения по формуле и вывод данных в два текстбокса
  58. int x;
  59. int y;
  60. int X1 = Convert.ToInt32(textBox1.Text);
  61. int Y1 = Convert.ToInt32(textBox2.Text);
  62. int X2 = Convert.ToInt32(textBox3.Text);
  63. int Y2 = Convert.ToInt32(textBox4.Text);
  64. int X3 = Convert.ToInt32(textBox5.Text);
  65. int Y3 = Convert.ToInt32(textBox6.Text);
  66. int X4 = Convert.ToInt32(textBox8.Text);
  67. int Y4 = Convert.ToInt32(textBox9.Text);
  68. if (((X2 - X1) * (Y4 - Y3) * (X4 - X3) * (Y2 - Y1)) == 0)
  69. return;
  70. y = (Y1*(X2-X1)*(Y4-Y3)-X1*(Y2-Y1)*(Y4-Y3)-Y3*(X4-X3)*(Y2-Y1)+X3*(Y4-Y3)*(Y2-Y1))/((X2-X1)*(Y4-Y3)-(X4-X3)*(Y2-Y1));
  71. x = ((y - Y1) * (X2 - X1) + X1 * (Y2 - Y1)) / (Y2 - Y1);
  72. string s = Convert.ToString(x);
  73. string p = Convert.ToString(y);
  74. textBox7.Text = (s);
  75. textBox10.Text = (p);
  76. }
  77. private void button5_Click(object sender, EventArgs e)
  78. {
  79. double X1 = Convert.ToDouble(textBox1.Text);
  80. double X2 = Convert.ToDouble(textBox2.Text);
  81. double Y1 = Convert.ToDouble(textBox3.Text);
  82. double Y2 = Convert.ToDouble(textBox4.Text);
  83. double d;
  84. d = Math.Sqrt(Math.Pow(Y2 - Y1, 2) + Math.Pow(X2 - X1, 2)); //Math.Sqrt(...) - корень; Math.Pow(Х, 2) степень
  85. d = Math.Round(d,2); //ограничение выводимой переменной до второго знака после запятой
  86. string s = Convert.ToString(d);
  87. textBox11.Text = (s);
  88. }
  89. private void button6_Click(object sender, EventArgs e)
  90. {
  91. double X3 = Convert.ToDouble(textBox5.Text);
  92. double X4 = Convert.ToDouble(textBox6.Text);
  93. double Y3 = Convert.ToDouble(textBox8.Text);
  94. double Y4 = Convert.ToDouble(textBox9.Text);
  95. double p;
  96. p = Math.Sqrt(Math.Pow(Y4 - Y3, 2) + Math.Pow(X4 - X3, 2)); //Math.Sqrt(...) - корень; Math.Pow(Х, 2) степень
  97. p = Math.Round(p, 2);
  98. string s = Convert.ToString(p);
  99. textBox12.Text = (s);
  100. }

Решение задачи: «Рисование линий разных размеров и цветов. Управление цветом в зависимости от условия»

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 woLines
  11. {
  12.     public partial class Form1 : Form
  13.     {
  14.         Panel panel;
  15.         Graphics graphics;
  16.  
  17.         TextBox[] _textBox;
  18.         Label linesCrossLabel;
  19.  
  20.         Pen
  21.             pen1,
  22.             pen2;
  23.  
  24.         string[] _tbText = { "0", "0", "100", "100", "0", "100", "100", "0" };
  25.  
  26.         public Form1()
  27.         {
  28.             InitializeComponent();
  29.         }
  30.  
  31.         private void Form1_Load(object sender, EventArgs e)
  32.         {
  33.             ClientSize = new System.Drawing.Size(500, 500);
  34.  
  35.             panel = new Panel();
  36.             panel.Location = new Point(5, 5);
  37.             panel.Size = new Size(ClientSize.Width - 115, ClientSize.Height - 10);
  38.             Paint += new PaintEventHandler(Form1_Paint);
  39.             Controls.Add(panel);
  40.  
  41.             graphics = panel.CreateGraphics();
  42.  
  43.             int x = ClientSize.Width - 105, y = 5;
  44.  
  45.             _textBox = new TextBox[8];
  46.             for (int i = 0; i < 8; i++)
  47.             {
  48.                 TextBox tb = new TextBox()
  49.                 {
  50.                     Location = new Point(x, y),
  51.                     Size = new Size(100, 25),
  52.                     Text = _tbText[i]
  53.                 };
  54.                 tb.TextChanged += new EventHandler(tb_TextChanged);
  55.                 _textBox[i] = tb;
  56.                 Controls.Add(tb);
  57.                 y += 35;
  58.             }
  59.  
  60.             linesCrossLabel = new Label()
  61.             {
  62.                 AutoSize = true,
  63.                 Location = new Point(x, y),
  64.                 Text = ""
  65.             };
  66.             Controls.Add(linesCrossLabel);
  67.         }
  68.  
  69.         void tb_TextChanged(object sender, EventArgs e)
  70.         {
  71.             int x11, y11, x12, y12;
  72.             int x21, y21, x22, y22;
  73.  
  74.             graphics.Clear(Color.White);
  75.  
  76.             if (int.TryParse(_textBox[0].Text, out x11)
  77.                 && int.TryParse(_textBox[1].Text, out y11)
  78.                 && int.TryParse(_textBox[2].Text, out x12)
  79.                 && int.TryParse(_textBox[3].Text, out y12)
  80.  
  81.                 && int.TryParse(_textBox[4].Text, out x21)
  82.                 && int.TryParse(_textBox[5].Text, out y21)
  83.                 && int.TryParse(_textBox[6].Text, out x22)
  84.                 && int.TryParse(_textBox[7].Text, out y22))
  85.             {
  86.                 if (LenghtLine(x11, y11, x12, y12) > LenghtLine(x21, y21, x22, y22))
  87.                 {
  88.                     pen1 = new Pen(Color.Red,2);
  89.                     pen2 = new Pen(Color.Green,2);
  90.                 }
  91.                 else
  92.                 {
  93.                     pen1 = new Pen(Color.Blue,2);
  94.                     pen2 = new Pen(Color.Brown,2);
  95.                 }
  96.                 graphics.DrawLine(pen1, x11, y11, x12, y12);
  97.                 graphics.DrawLine(pen2, x21, y21, x22, y22);
  98.  
  99.                 PointF point = XPoint(x11, y11, x12, y12, x21, y21, x22, y22);
  100.  
  101.                 linesCrossLabel.Text = "X= " + point.X.ToString() + "\nY= " + point.Y.ToString();
  102.             }
  103.  
  104.             Invalidate();
  105.         }
  106.  
  107.         double LenghtLine(int x1, int y1, int x2, int y2)
  108.         {
  109.             return Math.Sqrt(Math.Pow((x2 * x2 - x1 * x1), 2) + Math.Pow((y2 * y2 - y1 * y1), 2));
  110.         }
  111.  
  112.         PointF XPoint(int x11, int y11, int x12, int y12, int x21, int y21, int x22, int y22)
  113.         {
  114.             float znamenat = (y22 - y21) * (x12 - x11) - (x22 - x21) * (y12 - y11);
  115.  
  116.             float uA = ((x22 - x21) * (y11 - y21) - (y22 - y21) * (x11 - x21))
  117.                 / znamenat;
  118.             float uB = ((x12 - x11) * (y11 - y21) - (y12 - y11) * (x11 - x21))
  119.                 / znamenat;
  120.  
  121.             return new PointF(x11 + uA * (x12 - x11), y11 + uA * (y12 - y11));
  122.         }
  123.  
  124.         void Form1_Paint(object sender, PaintEventArgs e)
  125.         {
  126.            
  127.         }
  128.     }
  129. }

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


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

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

7   голосов , оценка 3.429 из 5

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

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

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