Повторно позициониране на 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