(一).说明

                        功能:用鼠标实现拖动图片.
                        用法:将鼠标指向一图片,按住鼠标左键拖动. 图片会随鼠标一起移动.

                        (二).代码

                        (说明: 此功能我用的用途是将象棋游戏之棋子拖动效果)

                        读者可以将此功能用作其它用途,也可以用作设计其它的游戏.

                        using System;
                        using System.Drawing;
                        using System.Collections;
                        using System.ComponentModel;
                        using System.Windows.Forms;
                        using System.Data;
                        using System.Threading;

                        namespace 拖动图片
                        {
                        /// <summary>
                        /// Form1 的摘要说明。
                        /// </summary>
                        public class Form1 : System.Windows.Forms.Form
                        {
                        public System.Windows.Forms.PictureBox[] pictureBox=new
                        PictureBox[2];
                        //private System.Windows.Forms.PictureBox pictureBox2;
                        /// <summary>
                        /// 必需的设计器变量。
                        /// </summary>
                        private System.ComponentModel.Container components =
                        null;

                        public Form1()
                        {
                        //
                        // Windows 窗体设计器支持所必需的
                        //
                        InitializeComponent();
                        for(int i=0;i<2;i++)
                        {
                        this.pictureBox[i].MouseUp += new
                        System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseUp);

                        this.pictureBox[i].MouseMove += new
                        System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);

                        this.pictureBox[i].MouseDown += new
                        System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseDown);

                        }

                        //
                        // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
                        //
                        }

                        /// <summary>
                        /// 清理所有正在使用的资源。
                        /// </summary>
                        protected override void Dispose( bool disposing )
                        {
                        if( disposing )
                        {
                        if (components != null)
                        {
                        components.Dispose();
                        }
                        }
                        base.Dispose( disposing );
                        }

                        #region Windows Form Designer generated code
                        /// <summary>
                        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
                        /// 此方法的内容。
                        /// </summary>
                        private void InitializeComponent()
                        {
                        System.Resources.ResourceManager resources = new
                        System.Resources.ResourceManager(typeof(Form1));
                        this.SuspendLayout();
                        this.pictureBox[0] = new
                        System.Windows.Forms.PictureBox();
                        this.pictureBox[1] = new
                        System.Windows.Forms.PictureBox();

                        //
                        // pictureBox1
                        //
                        this.pictureBox[0].BackColor =
                        System.Drawing.Color.Transparent;
                        this.pictureBox[0].Image =
                        ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));

                        this.pictureBox[0].Location = new
                        System.Drawing.Point(200, 192);
                        this.pictureBox[0].Name = "pictureBox1";
                        this.pictureBox[0].Size = new System.Drawing.Size(88,
                        72);
                        this.pictureBox[0].SizeMode =
                        System.Windows.Forms.PictureBoxSizeMode.StretchImage;
                        this.pictureBox[0].TabIndex = 0;
                        this.pictureBox[0].TabStop = false;
                        /*this.pictureBox[1].MouseUp += new
                        System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseUp);

                        this.pictureBox[1].MouseMove += new
                        System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);

                        this.pictureBox[1].MouseDown += new
                        System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseDown);*/

                        //
                        // pictureBox2
                        //
                        //this.Opacity=0.8;
                        this.pictureBox[1].BackColor =
                        System.Drawing.Color.DodgerBlue;
                        this.pictureBox[1].Image =
                        ((System.Drawing.Image)(resources.GetObject("pictureBox2.Image")));

                        this.pictureBox[1].Location = new
                        System.Drawing.Point(200, 72);
                        this.pictureBox[1].Name = "pictureBox2";
                        this.pictureBox[1].Size = new System.Drawing.Size(88,
                        64);
                        this.pictureBox[1].SizeMode =
                        System.Windows.Forms.PictureBoxSizeMode.StretchImage;
                        this.pictureBox[1].TabIndex = 1;
                        this.pictureBox[1].TabStop = false;
                        /*this.pictureBox[2].MouseUp += new
                        System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseUp);

                        this.pictureBox[2].MouseMove += new
                        System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);

                        this.pictureBox[2].MouseDown += new
                        System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseDown);

                        */

                        //
                        // Form1
                        //
                        this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

                        this.ClientSize = new System.Drawing.Size(432, 348);
                        this.Controls.Add(this.pictureBox[0]);
                        this.Controls.Add(this.pictureBox[1]);
                        this.Name = "Form1";
                        this.Text = "Form1";
                        this.ResumeLayout(false);

                        }
                        #endregion

                        /// <summary>
                        /// 应用程序的主入口点。
                        /// </summary>
                        [STAThread]
                        static void Main()
                        {
                        Application.Run(new Form1());
                        }

                        bool whetherSelected=false;
                        Point p=new Point();

                        #region 事件代码
                        private void pictureBox1_MouseDown(object sender,
                        System.Windows.Forms.MouseEventArgs e)
                        {
                        whetherSelected=true;
                        p.X=Cursor.Position.X;
                        p.Y=Cursor.Position.Y;
                        }

                        private void pictureBox1_MouseUp(object sender,
                        System.Windows.Forms.MouseEventArgs e)
                        {
                        whetherSelected=false;
                        }

                        private void pictureBox1_MouseMove(object sender,
                        System.Windows.Forms.MouseEventArgs e)
                        {
                        if(whetherSelected==true)
                        {
                        //加入一个函数,得到是哪个pictureBox
                        int index=-1;
                        for(int i=0;i<2;i++)
                        if(this.pictureBox[i].Capture)
                        index=i;
                        this.pictureBox[index].Left=this.pictureBox[index].Left+(Cursor.Position.X-p.X);

                        this.pictureBox[index].Top=this.pictureBox[index].Top+(Cursor.Position.Y-p.Y);


                        this.pictureBox[1-index].SendToBack();

                        p.X=Cursor.Position.X;
                        p.Y=Cursor.Position.Y;
                        }
                        }


                        #endregion


                        }
                        }

posted on 2007-02-06 11:57  mbskys  阅读(1341)  评论(0)    收藏  举报