Создайте равное поле на картинке, если вы знаете центрированные координаты - PullRequest
0 голосов
/ 31 мая 2018

Что я хочу сделать: у меня есть PictureBox с загруженным в него изображением.Пользователь должен щелкнуть где-нибудь на картинке.После нажатия я сохраняю координаты, в которых он щелкнул.

Затем я хочу создать новое поле, как показано на рисунке (ПРИМЕЧАНИЕ. Если пользователь щелкает по краям, изображение не должно перекрываться: enter image description here

После этого я хочу сохранить все координаты [начало / окончание], чтобы при повторном нажатии пользователя в следующей форме я мог проверить, был ли щелчок в созданном окне.до того.

Что я получил до сих пор:

private void pictureBox1_Click(object sender, EventArgs e)
{
    var centerX = ((MouseEventArgs) e).X;
    var centerY = ((MouseEventArgs) e).Y;

    // create box with center in these coordinates
    // save all the coordinates of the box, so I can check if further clicks are within the created box
}

Моя проблема Создание поля после щелчка, зная его местоположение в центре..

1 Ответ

0 голосов
/ 31 мая 2018

Создание поля после щелчка, зная его местоположение в центре.В некотором роде запутался способ его создания.

Вы можете просто создать квадрат с центром и шириной:

Rectangle CreateSquare(Point center, int width)
{
    return new Rectangle(center.X - width / 2, center.Y - width / 2,
        width, width);
}

Чтобы использовать его, достаточно обработать MouseDown событие вашего PictureBox и использовать e.Location:

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
    var r = CreateSquare(e.Location, 10);
}
...