自定义控件的拖动

转载 2006年06月07日 01:19:00

//添加事件
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DragEnd);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.DragMove);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DragBegin);

private Point p1;//拖动前鼠标的屏幕坐标
private Point p2;//拖动后鼠标的屏幕坐标
private bool _isDrag;//是否正在被拖动
private bool _allowDragMove;
/// <summary>
/// 是否允许被拖动。
/// </summary>
public bool AllowDragMove
{
get
{
return this._allowDragMove;
}
set
{
this._allowDragMove = value;
}
}

private void DragBegin(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Left & this.AllowDragMove)
{
this._isDrag = true;

//记录下拖动前的坐标
this.p1 = this.PointToScreen(new Point(e.X, e.Y));
}
}

private void DragEnd(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Left & this._isDrag)
{
this._isDrag = false;

//记录下拖动后的坐标
this.p2 = this.PointToScreen(new Point(e.X, e.Y));
//计算位移
int x = p2.X - p1.X;
int y = p2.Y - p1.Y;

//移动控件位置
this.Left += x;
this.Top += y;
}
}

private void DragMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(this._isDrag)
{
//记录下拖动后的坐标
this.p2 = this.PointToScreen(new Point(e.X, e.Y));
//计算位移
int x = p2.X - p1.X;
int y = p2.Y - p1.Y;

//移动控件位置
this.Left += x;
this.Top += y;

//把拖动后的顶点作为新的拖动前顶点
p1 = p2;
}



 


 

Android 自定义地图控件 可手指拉伸放大缩小拖动,指定坐标加点加线

之前公司 项目有用到 gps定位 ,以及 工厂地图 布置 点 ,但是 无法使用百度地图之类的 第三方地图SDK ,只给一个工厂平面图,就要实现gps定位,一直 地图上布点。 gps 坐标转换到 图片...

自定义控件处容器(拖动)

  • 2012年04月25日 10:22
  • 67KB
  • 下载

自定义控件 ——可拖动测量尺子

原创作者地址:http://blog.csdn.net/tl792814781/article/details/52388577 前言: 最近做的一个项目,有个界面是 输入框输入数值的,后来产...
  • zuo8787
  • zuo8787
  • 2016年09月01日 13:42
  • 1358

自定义控件_绘制太极(拖动)

package com.example.administrator.houzengyu_0417; import android.content.Context; import android.gr...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义控件的拖动
举报原因:
原因补充:

(最多只允许输入30个字)