Изменение цвета при столкновении объектов - C#

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

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

Есть статичная кнопка, и есть кнопка, которая движется по горизонтали. При соприкосновении фигуры должны поменять цвет. Помогите, пожалуйста, сделать обработку этого столкновения, нашла на форуме такое свойство, но не знаю как применить это для button'ов
private void InstanceRectangleIntersection(PaintEventArgs e)
{
 
    Rectangle rectangle1 = new Rectangle(50, 50, 200, 100);
    Rectangle rectangle2 = new Rectangle(70, 20, 100, 200);
 
    e.Graphics.DrawRectangle(Pens.Black, rectangle1);
    e.Graphics.DrawRectangle(Pens.Red, rectangle2);
 
    if (rectangle1.IntersectsWith(rectangle2))
    {
        rectangle1.Intersect(rectangle2);
        if (!rectangle1.IsEmpty)
        {
            e.Graphics.FillRectangle(Brushes.Green, rectangle1);
        }
    }
}
Вот сама задача с движением кнопки:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace lab_1
{
    public partial class Form1 : Form
    {
        int koef = 1;
        public Form1()
        {
            InitializeComponent();
            this.Width = 400;
            button1.Width = 40;
            button1.Left = 40;
          
            button1.BackColor = Color.Gold;
 
            timer1.Interval = 500; // 500 миллисекунд
            timer1.Enabled = true;
            button1.Click += toolStripButton1_Click;
            timer1.Tick += timer1_Tick;
 
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (button1.Left == (this.Width - button1.Width - 10))
            {
                koef = -1;
            }
            else if (button1.Left == 0)
            {
                koef = 1;
            }
            button1.Left += 10 * koef;
 
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            timer1.Start();
        }
 
        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            timer1.Stop();
        }
    }
}

Решение задачи: «Изменение цвета при столкновении объектов»

textual
Листинг программы
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (button1.Left == (this.Width - button1.Width - 10))
            {
                koef = -1;
            }
            else if (button1.Left == 0)
            {
                koef = 1;
            }
            button1.Left += 10 * koef;
 
            if (button1.Bounds.IntersectsWith(button2.Bounds))
                button1.BackColor = Color.Red;
        }

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


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

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

9   голосов , оценка 3.778 из 5
Похожие ответы