简体   繁体   中英

image from picturebox1 to picturebox2

I made a script for 1 form with 2 pictureboxes, until here everything is fine.

If you execute the code below, than you can see you can move the picturebox1 and also drop it inside picturebox2. Now i would like that the dropped picturebox1 can be resized, rotated and moved around inside picturebox2 (once executed by client). I have looked around but can not find the answers to this problem. Any help i would appreciate, Thank you

Here is the code:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    int x = 0;
    int y = 0;
    bool drag = false;
    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
        pictureBox1.DoDragDrop(pictureBox1.Image, DragDropEffects.Copy);
        x = e.X;
        y = e.Y;
        drag = true;
    }

    private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
    {
        if (drag)
        {
            //position new get
            pictureBox1.Top += e.Y - y;
            pictureBox1.Left += e.X - x;
        }
    }

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

    private void pictureBox2_DragEnter(object sender, DragEventArgs e)
    {
        e.Effect = DragDropEffects.All;
    }

    private void pictureBox2_DragDrop(object sender, DragEventArgs e)
    {
        pictureBox2.Image = (Image)e.Data.GetData(DataFormats.Bitmap);
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        pictureBox2.AllowDrop = true;
    }
}

}

In order to resize the pictureboxes you can define the following methods:

  private void IncreaseSize(PictureBox p,int dt)
        {
            Size size = p.Size;
            size.Height = size.Height + dt;
            size.Width=size.Width + dt;
            p.Size = size;

        }

        private void DecreaseSize(PictureBox p, int dt)
        {
            Size size = p.Size;
            size.Height = size.Height - dt;
            size.Width = size.Width - dt;
            p.Size = size;
        }

These methods can be called to events that you decide in your main form eg:

  private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
          IncreaseSize(pictureBox1,5);
        }

 private void pictureBox2_MouseMove(object sender, MouseEventArgs e)
        {
          DecreaseSize(pictureBox2, 10);
        }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM