c#中拖动图片的例子

这个问题来自论坛提问,并没有什么难度,也不需要重画内容。当然还有一种方法是通过api发送WM_SysCommand 和SC_MOVE,也就是拖动无标题窗体的方法 ,但是效果没有这个好。

using  System;
using  System.Drawing;
using  System.Windows.Forms;
namespace  WindowsApplication2
... {
    
public   partial   class  Form1 : Form
    
... {
        
static   string  strDown  =   @" AAACAAEAICAAAAsACQAwAQAAFgAAACgAAAAgAAAAQAAAAAEAAQAAAAAAAAIAAAAA
                       AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                       AAAAAAAAAAf4AAAD8AAAA/AAAAPwAAAH+AAAD/gAAB/8AAA//AAAN/wAACf+AAAH
                       9gAADbQAAA2wAAAJsAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                       AAAAAAAA////////////////////////////////////////////8AP///gH///4
                       B///+Af///AD///gA///wAH//4AB//+AAf//gAD//4AA///AAP//4AH//+AH///g
                       D////j////////////////////////////////////////////8=
" ;
        
static   string  strUp  =   @" AAACAAEAICAAAAoACAAwAQAAFgAAACgAAAAgAAAAQAAAAAEAAQAAAAAAAAIAAA
                        AAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                        AAAAAAAAAAAAAf4AAAD8AAAA/AAAAPwAAAH+AAAD/gAAB/8AAA//AAAd/wAAGf+
                        AAAH9gAADbYAAA2yAAAZsAAAGbAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                        AAAAAAAAAAAAA////////////////////////////////////////////8AP///
                        gH///4B///+Af///AD///gA///wAH//4AB//8AAf//AAD//4AA///gAP//4AD//
                        8AF///AB///5A////5///////////////////////////////////////8=
" ;

        Cursor curUp 
=   new  Cursor( new  System.IO.MemoryStream(Convert.FromBase64String(strUp)));
        Cursor curDown 
=   new  Cursor( new  System.IO.MemoryStream(Convert.FromBase64String(strDown)));
        
public  Form1()
        
... {
            InitializeComponent();
            
this .pictureBox1.Cursor  =  curUp;
        }


        
bool  bDragging  =   false ;
        Point pClicked;

        
private   void  pictureBox1_MouseDown( object  sender, MouseEventArgs e)
        
... {

            bDragging 
=   true ;
            pClicked 
=   new  Point(e.X, e.Y);
            
this .pictureBox1.Cursor  =  curDown;
        }


        
private   void  pictureBox1_MouseMove( object  sender, MouseEventArgs e)
        
... {
            
if  (bDragging)
            
... {
                Point oMoveToPoint;
                oMoveToPoint 
=   this .PointToClient(pictureBox1.PointToScreen( new  Point(e.X, e.Y)));
                oMoveToPoint.Offset(pClicked.X 
*   - 1 , pClicked.Y  *   - 1 );
                pictureBox1.Location 
=  oMoveToPoint;
            }

        }

        
private   void  pictureBox1_MouseUp( object  sender, MouseEventArgs e)
        
... {
            bDragging 
=   false ;
            
this .pictureBox1.Cursor  =  curUp;
        }

    }

}
 

转载于:https://www.cnblogs.com/cl1024cl/archive/2008/04/15/6204957.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值