自定義控制項的拖動
//新增事件
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;
/// 是否允許被拖動。
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;
自定義控制項的拖動
新增事件 this.mouseup new system.windows.forms.mouseeventhandler this.dragend this.mousemove new system.windows.forms.mouseeventhandler this.dragmove this...
c 自定義可拖動變形控制項
public class 控制項移動變形類 usercontrol 控制項類 rectangle 傳遞控制項 傳遞控制項相對於本控制項的範圍 rectangle 本控制項 本控制項相對於自己的範圍 rectangle 調節點邊框 new rectangle 8 8個點相對於本控制項的範圍 recta...
Android自定義控制項 可拖動控制的圓環控制條
前幾天收到這麼乙個需求,本來以為挺簡單的,沒想到最後發現實現起來還是有點小麻煩的,在這裡小小的總結一下。先看看下面這張需求的樣圖 然後在看一下最終實現的效果圖,可能是gif錄製軟體的問題,有一些浮影,忽略就好了 首先要分析一下最核心的地方,如何獲取到滑動距離對應的弧長,看圖 p1是手指按下的點,很明...