Переместить Picturebox в положение по умолчанию C #

Я использую WinForms. В моем приложении WinForms у меня есть окно с картинками. У меня есть изображение в коробке с картинками. Этот код позволяет мне перемещать изображение внутри графического блока. Как мне вернуть изображение в исходное положение при нажатии кнопки?

    private Point startingPoint = Point.Empty;
    private Point movingPoint = Point.Empty;
    private bool panning = false;

    private void pictureBox1_MouseDown_1(object sender, MouseEventArgs e)
    {
        if (On_Radio.Checked == true)
        {

            panning = true;
            startingPoint = new Point(e.Location.X - movingPoint.X,
                                      e.Location.Y - movingPoint.Y);
        }

    }



    private void pictureBox1_MouseMove_1(object sender, MouseEventArgs e)
    {
        if (panning)
        {
            movingPoint = new Point(e.Location.X - startingPoint.X,
                                    e.Location.Y - startingPoint.Y);
            pictureBox1.Invalidate();
        }
    }

    private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
    {
        panning = false;
    }

    private void pictureBox1_Paint_1(object sender, PaintEventArgs e)
    {

        e.Graphics.Clear(Color.White);
        e.Graphics.DrawImage(pictureBox1.Image, movingPoint);         
    }

person taji01    schedule 14.10.2015    source источник
comment
Верните для movingPoint значение Point.Empy и снова отключите PictureBox.   -  person LarsTech    schedule 14.10.2015
comment
Это не вернуло изображение к его местоположению по умолчанию   -  person taji01    schedule 14.10.2015
comment
Какое должно быть местоположение по умолчанию?   -  person LarsTech    schedule 14.10.2015
comment
@ taji01, если исходное состояние вашей программы в порядке, movingPoint =Point.Empty должен помочь   -  person Reza Aghaei    schedule 14.10.2015
comment
@ taji01 не по теме, но лучше использовать более чистые имена для обработчиков событий, например, использовать pictureBox1_MouseMove вместо pictureBox1_MouseMove_1 Кроме того, лучше использовать настраиваемый элемент управления или настраиваемое унаследованное графическое окно для выполнения такого панорамирования и рисования изображения без мерцания, вам также следует подумайте о полосах прокрутки и .... Хороший образец для начала работы с GDI +, но вы должны узнать больше :)   -  person Reza Aghaei    schedule 15.10.2015


Ответы (1)


Если исходное состояние вашей программы в порядке, значит, movingPoint = Point.Empty должен помочь. Также вы должны вызвать pictureBox1.Invalidate(), чтобы перерисовать окно с картинками:

private void yourButton_Click(object sender, EventArgs e)
{
    movingPoint = Point.Empty;
    pictureBox1.Invalidate();
}
person Reza Aghaei    schedule 14.10.2015