PictureBox находится над другим PictureBox

42
25 мая 2019, 04:20

пишу программку, мне нужно, чтобы когда PictureBox1, именуемый "Player", наезжает на определенные картинки PictureBox2-15, именуемые как eat1-14, они пропадали. Вот, как это попробовал я:

if ((Player.Location.X < eat1.Location.X))
        {
            if ((Player.Location.Y < eat1.Location.Y))
            {
                eat1.Visible = false;
            }
        }

Работает очень странно, т.е. иногда еда не съедается, либо съедается только один из 14.

Answer 1

У тебя есть 2 обьекта описанных Rectangle (прямоугольником). Это значит что тебе нужно сделать простенькую проверку

Метод будет приблизительно таким:

bool RectContains(Rectangle R1, Rectangle R2)
{
    if (   (R2.x+R2.width) < (R1.x+R1.width)
        && (R2.x) > (R1.x)
        && (R2.y) > (R1.y)
        && (R2.y+R2.height) < (R1.y+R1.height)
        )
    {
        return true;
    }
    else
    {
        return false;
    }
}

(код не проверял)

Ну и любую картинку можно описать как Rectangle. То есть точка левого верхнего угла + ширина и высота прямоугольника.

Ну а дальше делай проверку каждые 50 мс(например), если

if( RectContains(R1, R2) )
{
     PictureBox2.Destroy(); //ну или визибл = фалс
}
READ ALSO
Должен ли DTO содержать аннотации данных?

Должен ли DTO содержать аннотации данных?

Имеется приложение ASPNet Core 2

30
&ldquo;Занять&rdquo; файл на время

“Занять” файл на время

Разрабатываю приложение, которое участвует в цепочке перемещения файловТо есть: как только в папке 1 появляется файл, мое приложение его...

62
Глобальный хук клавиш

Глобальный хук клавиш

По какой-то причине хук обрабатывается, но ничего не происходит, приложение просто напросто закрывается без каких-либо ошибок

29
Winforms Ribbon интерфейс под Windows 10?

Winforms Ribbon интерфейс под Windows 10?

Подскажите, пожалуйста, существует ли под Windows 10 бесплатная библиотека для C# WinForms для отображения Ribbon интерфейса?

56