以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何拖拽线使得线头跟着鼠标走  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=60563)

--  作者:jiangxun
--  发布时间:2014/11/27 3:06:00
--  如何拖拽线使得线头跟着鼠标走

拖拽水平线如下       

e.Sender.width =vars("x") + (e.x - vars("x"))

拖拽垂直线如下:

e.Sender.Height = vars("y") + (e.y - vars("y"))

拖拽斜向下的线如下:

        e.Sender.Height = vars("y") + (e.y - vars("y"))
        e.Sender.width = vars("x") + (e.x - vars("x"))

 

以上都可实现

但是在拖拽反向线时,也就是left,和top要动起来,就实现起来有为题请教,一下是我的方法,请指导:

斜向上:


 e.Sender.top += e.y - vars("y")
e.Sender.Height += - (e.y - vars("y"))
e.Sender.width = vars("x") + (e.x - vars("x"))

水平线反向拖拽:

        e.Sender.Left += (e.x - vars("x"))
        e.Sender.Width +=  - (e.x - vars("x"))
垂直线反向:

        e.Sender.Top += (e.y - vars("y"))
        e.Sender.Height +=  - (e.y - vars("y"))
斜向上的线反向拖拽

        e.Sender.Left += e.x - vars("x")
        e.Sender.Width +=  - (e.x - vars("x"))
        e.Sender.Height = vars("y") + (e.y - vars("y"))
斜向下的线反向拖拽:

        e.Sender.Left += e.x - vars("x")
        e.Sender.Top += e.y - vars("y")
        e.Sender.Width +=  - (e.x - vars("x"))
        e.Sender.Height += - (e.y - vars("y"))

反向拖拽的意思是拿另一头当线头拉伸,

正常情况下top、left不变好做,拉伸非top,left的一头。但是拉伸top,left一头时总是有问题。

恳请帮助解决。



--  作者:Bin
--  发布时间:2014/11/27 8:03:00
--  
上个例子看看
--  作者:有点甜
--  发布时间:2014/11/27 9:07:00
--  
 或者不要用线控件,你可以变通一下,比如放两个panel控件或者其它控件,模拟成头和尾,拉扯头尾的时候,在两点之间画一条线就好。
--  作者:jiangxun
--  发布时间:2014/11/27 23:57:00
--  

请在线段的控制上给两个函数使得线段可随鼠标移动分别绕着两个端点旋转并伸缩,谢谢,请贵司工程师提供这样的函数,否则线段无法发挥全面的作用。我是真的需要这个功能,非常感谢能够提供。


--  作者:有点甜
--  发布时间:2014/11/28 9:03:00
--  
以下是引用jiangxun在2014-11-27 23:57:00的发言:

请在线段的控制上给两个函数使得线段可随鼠标移动分别绕着两个端点旋转并伸缩,谢谢,请贵司工程师提供这样的函数,否则线段无法发挥全面的作用。我是真的需要这个功能,非常感谢能够提供。

 

看3楼,用两个控件做头和尾,两控件之间画一条线


--  作者:jiangxun
--  发布时间:2014/11/28 19:39:00
--  

谢谢