Csharp/CSharp Tutorial/GUI Windows Forms/Drag Move

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Drag and Drop Image

using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
public class ImageDragDrop : System.Windows.Forms.Form
{
  private System.ruponentModel.Container components = null;
  private bool  isDragging = false;
  private int   oldX, oldY;
  Rectangle dropRect = new Rectangle(100, 100, 150, 150);
  private PictureBox picBox = new PictureBox();
  public ImageDragDrop()
  {
    InitializeComponent();
    CenterToScreen();
    picBox.SizeMode = PictureBoxSizeMode.StretchImage;
    picBox.Location = new System.Drawing.Point(64, 32);
    picBox.Size = new System.Drawing.Size(50, 50);
    picBox.Image = new Bitmap("YourFile.bmp");
    picBox.MouseDown += new MouseEventHandler(picBox_MouseDown);
    picBox.MouseUp += new MouseEventHandler(picBox_MouseUp);
    picBox.MouseMove += new MouseEventHandler(picBox_MouseMove);
    picBox.Cursor = Cursors.Hand;
    Controls.Add(picBox);
  }
  protected override void Dispose( bool disposing )
  {
    picBox.Dispose();
    if( disposing )
    {
      if (components != null) 
      {
        components.Dispose();
      }
    }
    base.Dispose( disposing );
  }

  private void InitializeComponent()
  {
    this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    this.ClientSize = new System.Drawing.Size(292, 273);
    this.Name = "ImageDragDrop";
    this.Text = "Dragging Images";
    this.Paint += new System.Windows.Forms.PaintEventHandler(this.ImageDragDrop_Paint);
  }
  [STAThread]
  static void Main() 
  {
    Application.Run(new ImageDragDrop());
  }
  private void picBox_MouseDown(object sender, MouseEventArgs e) 
  {
    isDragging = true;
    oldX = e.X;
    oldY = e.Y;
  }
  private void picBox_MouseMove(object sender, MouseEventArgs e) 
  {
    if (isDragging) 
    {
      picBox.Top = picBox.Top + (e.Y - oldY);
      picBox.Left = picBox.Left + (e.X - oldX);
    }
  }
  private void picBox_MouseUp(object sender, MouseEventArgs e) 
  {
    isDragging = false;
    if(dropRect.Contains(picBox.Bounds))
    {
      MessageBox.Show("Message", "In Rectangle");
    }
  }
  private void ImageDragDrop_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
  {
    Graphics g = e.Graphics;
    g.FillRectangle(Brushes.Purple, dropRect);
    g.DrawString("Drop Image Here..", new Font("Times New Roman", 25),Brushes.Yellow, dropRect);
  }
}