public override void MouseUp(MouseEventArgs e) { if (this.Resizing) { this.Resizing = false; POINT vNewLeftTop = new POINT(); // 缩放后的Rect的LeftTop if (FStartPt.X < FEndPt.X) { vNewLeftTop.X = FStartPt.X; } else { vNewLeftTop.X = FEndPt.X; } if (FStartPt.Y < FEndPt.Y) { vNewLeftTop.Y = FStartPt.Y; } else { vNewLeftTop.Y = FEndPt.Y; } vNewLeftTop.X = vNewLeftTop.X - FLeftTop.X; vNewLeftTop.Y = vNewLeftTop.Y - FLeftTop.Y; FStartPt.Offset(-vNewLeftTop.X, -vNewLeftTop.Y); FEndPt.Offset(-vNewLeftTop.X, -vNewLeftTop.Y); this.Left = this.Left + vNewLeftTop.X; this.Top = this.Top + vNewLeftTop.Y; this.Width = Math.Abs(FEndPt.X - FStartPt.X); this.Height = Math.Abs(FEndPt.Y - FStartPt.Y); } }
public override void MouseMove(MouseEventArgs e) { if (Active) { if (this.Resizing) { if (FMouseDownObj == HCLineObj.cloLeftOrTop) { FStartPt.Offset(e.X - this.FResizeX, e.Y - this.FResizeY); } else { FEndPt.Offset(e.X - this.FResizeX, e.Y - this.FResizeY); } this.FResizeX = e.X; this.FResizeY = e.Y; HC.GCursor = Cursors.Cross; } else { HCLineObj vLineObj = GetLineObjAt(e.X, e.Y); if ((vLineObj == HCLineObj.cloLeftOrTop) || (vLineObj == HCLineObj.cloRightOrBottom)) { HC.GCursor = Cursors.Cross; } else if (vLineObj != HCLineObj.cloNone) { HC.GCursor = Cursors.SizeAll; } } } else { HC.GCursor = Cursors.Default; } }