C# 鼠标拖放图片透明缩略图效果实现思路

来源:互联网 发布:云计算的架构和类型 编辑:程序博客网 时间:2024/05/01 13:32
 

  int x = 0, y = 0;
        Form2 objFrm = null;
        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            int inttTemp = Cursor.Position.X;
            x = e.X;
            y = e.Y;
            int x1 = Cursor.Position.X;
            int y1 = Cursor.Position.Y;
            objFrm = new Form2(pictureBox1.Image);
            objFrm.Top = x1;
            objFrm.Left = y1 - e.X;
            objFrm.Visible = false;
            objFrm.Show();
        }

        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                objFrm.Visible = true;
                objFrm.Location = new Point(Cursor.Position.X, Cursor.Position.Y);
            }
        }

        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            objFrm = null;
        }

 


        #region "自定义在窗体背景中显示被拖放的图片的方法"       
        private void SetDragImageToForm(PictureBox pb, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Copy;//设置拖放操作中目标放置类型为复制         
            string[] str_Drop = (string[])e.Data.GetData(DataFormats.FileDrop, true);
            //检索数据格式相管理的数据          
            string tempstr;          
            Bitmap bkImage;//定义Bitmap变量       
            tempstr = str_Drop[0];//获取拖放文件的目录         
            try
            {
                bkImage = new Bitmap(tempstr);//存储拖放的图片     
                pb.Size = new Size(bkImage.Width + 6, bkImage.Height + 33);
                //根据图片设置窗体的大小           
                pb.BackgroundImage = bkImage;//在窗体背景中显示图片    
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }
        #endregion

 

  Image objImage = null;
        public Form2(Image img)
        {
            InitializeComponent();
            this.BackgroundImage = img;
            objImage = img;
            this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form2_Paint);
        }
        void Form2_Paint(object sender,PaintEventArgs e)
        {
            using (Bitmap objBitmap = new Bitmap(objImage, this.Width, this.Height))
            {
                e.Graphics.DrawImage(objImage, e.ClipRectangle);
            }
        }
        private void Form2_Load(object sender, EventArgs e)
        {

        }

        private void Form2_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                intX = e.X;
                intY = e.Y;
            }
        }

        private void Form2_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                this.Top = Control.MousePosition.Y - intY - SystemInformation.FrameBorderSize.Height;
                this.Left = Control.MousePosition.X - intX - SystemInformation.FrameBorderSize.Width;
            }
        }
        int intX = 0, intY = 0;
        private void Form2_MouseUp(object sender, MouseEventArgs e)
        {
            this.Close();
        }

 

 

 

 

原创粉丝点击