Рисование линий разных размеров и цветов. Управление цветом в зависимости от условия - C#
Формулировка задачи:
вопрос следующий у меня есть код в котором я рисую линии две нахожу их точки пересечения и так далее
вопрос следующий я хочу чтоб после отрисовок линий проверялось что если линии 1 длиннее
линии 2 то линия 1 будет красного (например) цвета, а линия 2 будет такого-то цвета.
А если линия 1 меньше линии 2 то другие цвета
Перепробовал разные варианты код не отрбатывается((( помогите пожалуйста.
Листинг программы
- 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 WindowsFormsApplication2
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- Graphics gr;
- gr = this.CreateGraphics();
- Pen pn = new Pen(Color.Black, 3);
- int X1 = Convert.ToInt32(this.textBox1.Text); //ввод данных в текстбокс
- int Y1 = Convert.ToInt32(this.textBox2.Text); //ввод данных в текстбокс
- int X2 = Convert.ToInt32(this.textBox3.Text); //ввод данных в текстбокс
- int Y2 = Convert.ToInt32(this.textBox4.Text); //ввод данных в текстбокс
- gr.DrawLine(pn, X1, Y1, X2, Y2);
- }
- private void button2_Click(object sender, EventArgs e)
- {
- Graphics gr;
- gr = this.CreateGraphics();
- Pen pn1 = new Pen(Color.Black, 3);
- int X3 = Convert.ToInt32(this.textBox5.Text); //ввод данных в текстбокс
- int Y3 = Convert.ToInt32(this.textBox6.Text); //ввод данных в текстбокс
- int X4 = Convert.ToInt32(this.textBox8.Text); //ввод данных в текстбокс
- int Y4 = Convert.ToInt32(this.textBox9.Text); //ввод данных в текстбокс
- gr.DrawLine(pn1, X3, Y3, X4, Y4);
- }
- private void button3_Click(object sender, EventArgs e)
- {
- // очистка TextBox
- Graphics gr;
- gr = this.CreateGraphics();
- gr.Clear(BackColor);
- textBox7.Text = "";
- textBox7.Clear();
- textBox10.Text = "";
- textBox10.Clear();
- textBox11.Text = "";
- textBox11.Clear();
- textBox12.Text = "";
- textBox12.Clear();
- }
- private void button4_Click(object sender, EventArgs e)
- {
- //расчет точки пересечения по формуле и вывод данных в два текстбокса
- int x;
- int y;
- int X1 = Convert.ToInt32(textBox1.Text);
- int Y1 = Convert.ToInt32(textBox2.Text);
- int X2 = Convert.ToInt32(textBox3.Text);
- int Y2 = Convert.ToInt32(textBox4.Text);
- int X3 = Convert.ToInt32(textBox5.Text);
- int Y3 = Convert.ToInt32(textBox6.Text);
- int X4 = Convert.ToInt32(textBox8.Text);
- int Y4 = Convert.ToInt32(textBox9.Text);
- if (((X2 - X1) * (Y4 - Y3) * (X4 - X3) * (Y2 - Y1)) == 0)
- return;
- 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));
- x = ((y - Y1) * (X2 - X1) + X1 * (Y2 - Y1)) / (Y2 - Y1);
- string s = Convert.ToString(x);
- string p = Convert.ToString(y);
- textBox7.Text = (s);
- textBox10.Text = (p);
- }
- private void button5_Click(object sender, EventArgs e)
- {
- double X1 = Convert.ToDouble(textBox1.Text);
- double X2 = Convert.ToDouble(textBox2.Text);
- double Y1 = Convert.ToDouble(textBox3.Text);
- double Y2 = Convert.ToDouble(textBox4.Text);
- double d;
- d = Math.Sqrt(Math.Pow(Y2 - Y1, 2) + Math.Pow(X2 - X1, 2)); //Math.Sqrt(...) - корень; Math.Pow(Х, 2) степень
- d = Math.Round(d,2); //ограничение выводимой переменной до второго знака после запятой
- string s = Convert.ToString(d);
- textBox11.Text = (s);
- }
- private void button6_Click(object sender, EventArgs e)
- {
- double X3 = Convert.ToDouble(textBox5.Text);
- double X4 = Convert.ToDouble(textBox6.Text);
- double Y3 = Convert.ToDouble(textBox8.Text);
- double Y4 = Convert.ToDouble(textBox9.Text);
- double p;
- p = Math.Sqrt(Math.Pow(Y4 - Y3, 2) + Math.Pow(X4 - X3, 2)); //Math.Sqrt(...) - корень; Math.Pow(Х, 2) степень
- p = Math.Round(p, 2);
- string s = Convert.ToString(p);
- textBox12.Text = (s);
- }
Решение задачи: «Рисование линий разных размеров и цветов. Управление цветом в зависимости от условия»
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 woLines
- {
- public partial class Form1 : Form
- {
- Panel panel;
- Graphics graphics;
- TextBox[] _textBox;
- Label linesCrossLabel;
- Pen
- pen1,
- pen2;
- string[] _tbText = { "0", "0", "100", "100", "0", "100", "100", "0" };
- public Form1()
- {
- InitializeComponent();
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- ClientSize = new System.Drawing.Size(500, 500);
- panel = new Panel();
- panel.Location = new Point(5, 5);
- panel.Size = new Size(ClientSize.Width - 115, ClientSize.Height - 10);
- Paint += new PaintEventHandler(Form1_Paint);
- Controls.Add(panel);
- graphics = panel.CreateGraphics();
- int x = ClientSize.Width - 105, y = 5;
- _textBox = new TextBox[8];
- for (int i = 0; i < 8; i++)
- {
- TextBox tb = new TextBox()
- {
- Location = new Point(x, y),
- Size = new Size(100, 25),
- Text = _tbText[i]
- };
- tb.TextChanged += new EventHandler(tb_TextChanged);
- _textBox[i] = tb;
- Controls.Add(tb);
- y += 35;
- }
- linesCrossLabel = new Label()
- {
- AutoSize = true,
- Location = new Point(x, y),
- Text = ""
- };
- Controls.Add(linesCrossLabel);
- }
- void tb_TextChanged(object sender, EventArgs e)
- {
- int x11, y11, x12, y12;
- int x21, y21, x22, y22;
- graphics.Clear(Color.White);
- if (int.TryParse(_textBox[0].Text, out x11)
- && int.TryParse(_textBox[1].Text, out y11)
- && int.TryParse(_textBox[2].Text, out x12)
- && int.TryParse(_textBox[3].Text, out y12)
- && int.TryParse(_textBox[4].Text, out x21)
- && int.TryParse(_textBox[5].Text, out y21)
- && int.TryParse(_textBox[6].Text, out x22)
- && int.TryParse(_textBox[7].Text, out y22))
- {
- if (LenghtLine(x11, y11, x12, y12) > LenghtLine(x21, y21, x22, y22))
- {
- pen1 = new Pen(Color.Red,2);
- pen2 = new Pen(Color.Green,2);
- }
- else
- {
- pen1 = new Pen(Color.Blue,2);
- pen2 = new Pen(Color.Brown,2);
- }
- graphics.DrawLine(pen1, x11, y11, x12, y12);
- graphics.DrawLine(pen2, x21, y21, x22, y22);
- PointF point = XPoint(x11, y11, x12, y12, x21, y21, x22, y22);
- linesCrossLabel.Text = "X= " + point.X.ToString() + "\nY= " + point.Y.ToString();
- }
- Invalidate();
- }
- double LenghtLine(int x1, int y1, int x2, int y2)
- {
- return Math.Sqrt(Math.Pow((x2 * x2 - x1 * x1), 2) + Math.Pow((y2 * y2 - y1 * y1), 2));
- }
- PointF XPoint(int x11, int y11, int x12, int y12, int x21, int y21, int x22, int y22)
- {
- float znamenat = (y22 - y21) * (x12 - x11) - (x22 - x21) * (y12 - y11);
- float uA = ((x22 - x21) * (y11 - y21) - (y22 - y21) * (x11 - x21))
- / znamenat;
- float uB = ((x12 - x11) * (y11 - y21) - (y12 - y11) * (x11 - x21))
- / znamenat;
- return new PointF(x11 + uA * (x12 - x11), y11 + uA * (y12 - y11));
- }
- void Form1_Paint(object sender, PaintEventArgs e)
- {
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д